Laravel

[Laravel]「laravel-ide-helper」でコード補完をする

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