Laravelでの開発時に「PhpStorm」で開発しますが、「laravel-ide-helper」と「doctrine/dbal」を使用することで、強力なコード補完が行えるようになります。
特にデータベースを使用したプロジェクトでは、カラム名などを正確に入力する必要があるためコード補完が無いと正しく取得できずに、バグが発生することもあるので、出来る限り楽に開発できるようにします。
「laravel-ide-helper」と「doctrine/dbal」を導入する
インストール
プロジェクトのLaravelのフォルダに移動します。
$ cd [Laravelのソースのパス]
以下のコマンドを、それぞれ実行してライブラリをインストールします。
$ composer require --dev barryvdh/laravel-ide-helper
$ composer require --dev doctrine/dbal
helperファイルの作成
以下のコマンドを入力することでhelperファイルを作成し、「PhpStorm」がこれを使用してコード補完の候補を表示するようになります。
$ php artisan ide-helper:generate
PhpStorm用のMETAファイルを作成するために、以下のコマンドを実行します。
$ php artisan ide-helper:meta
上記のコマンドが成功すると「_ide_helper_models.php」と「.phpstorm.meta.php」が作成されるようになります。
DBモデルに対してアノテーションを付与する
データベースのモデルクラスに対して、アノテーションを付与する場合は以下のように行います。
以下は「app」フォルダ下に「Entities」フォルダの中にモデルファイルがあるものと想定します。
$ php artisan ide-helper:models --dir="app/Entities"
以下のメッセージが表示されますので「yes」と入力します。
Do you want to overwrite the existing model files? Choose no to write to _ide_helper_models.php instead? (Yes/No): (yes/no) [no]:
「no」もしくは未入力の場合は、「_ide_helper_models.php」というファイルを作成するようになります。
ソースコードに記載したく無い場合のみ「no」としましょう。
またエラーとなった場合にメッセージを確認してください。
実行時にデータベースに接続しにいくため、大概は「.env」に記述されているデータベースの情報が誤ってるか、データベースに接続出来ない可能性が高いです。
以前に公開した「ermaster-to-migration」を使用して、データベースソースコードと「laravel-ide-helper」を組み合わせることで、楽に開発が行えるようになるはずです。
「Lumen」で使用する場合
「Laravel」の軽量化フレームワークである「Lumen」で導入する場合は追加で対応を行う必要があります。
「laravel-ide-helper」をインストール後に「bootstrap/app.php」に「LaravelIdeHelper」を使用する事を追加します。
$app->register(Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class); // laravel-ide-helperを使用出来るようにする
また「league/flysystem」もインストールする必要があります。
「Laravel」では標準で入っておりますが、「Lumen」では入っていません。
$ composer require league/flysystem
もし「league/flysystem」が入っていない状態で、「ide-helper:generate」コマンドを実行すると下記のエラーが表示されますので注意してください。
In FilesystemManager.php line 174:
Class "League\Flysystem\UnixVisibility\PortableVisibilityConverter" not found