[Laravel] SeedingにFakerライブラリを使う

先日試したFakerというPHPライブラリだけど、Laravelには標準で含まれているらしい。FakerデータをSeedingするのに役立ちそう。

使用例

参考サイト

Generating fake Seeds data with Faker package – Laravel Daily
http://laraveldaily.com/generating-fake-seeds-data-with-faker-package/

[Laravel] Seedingの基本手順

1. Seederを作成する。

/database/seeds/PostTableSeeder.phpが作成される。

2. Seederを実装する。

3. 作成したSeederをDatabaseSeederから呼ぶ。

実行

DatabaseSeederを実行するには

Seederを指定して実行するには

マイグレーションと同時実行するには

参考サイト

Database: Seeding – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/5.2/seeding

[PHP] Faker – テストに役立つフェイクなデータを生成するライブラリ

フェイクデータを生成するPHPライブラリ。PHP 5.3.3以降。

fzaninotto/Faker · GitHub
https://github.com/fzaninotto/Faker

インストール

サンプル

アクセサが値を更新するので、下のようにプロパティにアクセスするたびに異なる内容が得られる。

createの引数にja_JPを指定すると日本語のデータが得られる。だけど、プロパティが呼ばれるたびに内容が変わってしまうので、1つの名前を漢字、カナ姓名、カナ姓、カナ名と異なる書式で取得することはできなさそう。

[Laravel] アプリケーションキー(APP_KEY)を設定する

ローカルのHomesteadで開発していたサイトをレンサバにアップしたらエラーになった。初心者ゆえにちょっとハマッたので覚え書き。

やったこと

  1. ローカルのLaravelプロジェクトをサーバーへ丸ごとアップロード
  2. サーバー上で.env.exampleを.envにコピー
  3. データベース情報を.envに記述
  4. publicディレクトリをウェブサーバーのホームディレクトリにシンボリックリンク
  5. ブラウザからアクセス

エラー

RuntimeException in EncryptionServiceProvider.php line 29:
No supported encrypter found. The cipher and / or key length are invalid.

Laravel-error

原因

アプリケーションキーが設定されていなかった。すなわち、.envのAPP_KEYがデフォルト値のまま。

対処

サーバー上で以下コマンドを実行する。これにより、.envのAPP_KEYがセットされる。

捕捉

composerを使ってLaravelをインストールすると、アプリケーションキーの生成が自動で行われる。だけど、(.env.exampleをコピーするなどして).envを手動で作成する場合には、手動でコマンドを実行してアプリケーションキーを作成しないとならない。

参考サイト

Laravel Recipes :: Generating a New Application Key
http://laravel-recipes.com/recipes/283/generating-a-new-application-key

[Git] Visual Studioの.gitignoreの設定

これまでWebアプリだけGitで管理してきたけど、バックアップ目的で自前ソースは全て共有リポジトリにアップしておきたい。

Webアプリ以外だと、C#で書かれたVisual StudioベースのWindowsアプリのプロジェクトが幾つかある。だけど、PHPなどのライトウェイト言語と違って中間ファイルが沢山できるので、リポジトリ登録時にそういうファイルを除外しないとならない。除外するファイルが明白にわかっているなら単に.gitignoreに書けばいいんだけど、Visual Studioがどんな中間ファイルを作成するのか調べるのが面倒だよな。

と思っていたら、GitHubでVisual Studio用の.gitignoreを用意していてくれたので覚え書き。必要であれば、これをベースに自分用にカスタマイズした.gitignoreを作っておけばいいよね。

gitignore/VisualStudio.gitignore at master · github/gitignore · GitHub
https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

[CakePHP] Maintenance – メンテナンス表示プラグイン

fusic/maintenance · GitHub
https://github.com/fusic/maintenance

導入手順

1. ダウンロードしたコードをapp/Plugin/Maintenanceに配置

2. プラグインのロード設定 (app/Config/bootstrap.php)

3. コントローラへのコンポーネント追加 (app/Controller/AppController.php)

4. メンテナンス表示用のコントローラとビューを実装

  • app/Controller/PublicController.php
  • app/View/Public/maintenance.ctp

5. メンテナンスモードを有効化 (app/config/bootstrap.php)

開始/終了日時を指定してメンテナンス表示することも可能。詳しくはReadMeを参照。

[JavaScript] テーブルへの列/セルの追加/削除

参考サイト

HTML DOM Table Object
http://www.w3schools.com/jsref/dom_obj_table.asp

[CakePHP] 共通処理の実装方法

共通処理をどうやって実装するべきかの指針。

  • Model – 基底クラス(AppModelやその派生クラス)に実装する
  • View – Elementsにまとめる
  • Controller – Componentにまとめる
  • 全て – Vendorに実装する

参考サイト

CakePHP 共通処理の扱い方(module) まとめ – Qiita
http://qiita.com/shizuma/items/5de7dc9d98af0300df18

CakePHPでモデルの共通処理作成 – Qiita
http://qiita.com/uedatakeshi/items/0db4bfc1a45826b8156e

[CakePHP 2.x]Model,View,Controllerで共通する処理 – Qiita
http://qiita.com/nfnoface/items/8f995b49d957d0c85baa

[CakePHP] ログをファイルに書き出す

デバッグ用や運用エラーの記録用にログをファイルに書き出したい場合がある。CalePHPには手軽に使えるロギングの仕組みが用意されている。

Logging — CakePHP Cookbook 2.x documentation
http://book.cakephp.org/2.0/en/core-libraries/logging.html

Class CakeLog | CakePHP
http://api.cakephp.org/2.7/class-CakeLog.html

CakePHPのクラスではlog()関数を呼ぶことでログをファイルに書き出すことができる。log()関数は2つの引数を取り、1つ目の引数がログメッセージ、2つ目の引数はログ種別(error, warning, info, debugなど)である。ログ種別がログ出力先のファイル名を決定する。ログ種別を指定しないとLOG_ERRORが使われる。

あるいはCakeLog::write()関数を呼ぶことにより、任意のクラスからログを書き出すことができる。write()関数の1つ目の引数にはログ種別、2つ目の引数にはログメッセージを指定する。

config()関数を使ってログの動作オプションを指定することもできる。以下はログファイルのパスを指定した例。注意事項としては、config()関数は必ずapp/Config/bootstrap.phpで呼び出すこと。core.phpで呼び出すと、パスが未設定のために不具合の原因となる。

参考サイト

【CakePHP】独自ログ – Qiita
http://qiita.com/kazu56/items/1930bfb8960d52d71a50

CakePHPでログの振り分け(1つのconfigで複数ファイルに) – Qiita
http://qiita.com/HamaTech/items/4c92b36c8c9803c4eec9

CakePHP 2.x – ログローテーション
http://kwski.net/cakephp-2-x/1048/