Laravel の補完を PHPStorm で使いやすくする #Laravel #PHPStorm

概要

Laravel のモデルでクエリを組み立てようとすると、 Method 'where' not found と言われてしまう。

このせいで PHPStorm の補完が効かなかったり、警告が出てしまったりする。

<?php
// where のとこで警告が出る(動作は問題ない)
MyModel::where('name', $name)->first();

// query() をかませると平気なんだけれども、面倒
MyModel::query()->where('name', $name)->firstOrFail();

laravel-ide-helper を導入する

laravel-ide-helper で解決できそうなので導入してみる。

IDE補完用のコードを生成してくれるようだ。

github.com

README に従って入れてくだけ。

sail composer require --dev barryvdh/laravel-ide-helper

モデル以外にも役立ちそうなので、全部入れてみる。

sail php artisan ide-helper:generate
sail php artisan ide-helper:models
sail php artisan ide-helper:meta

直接プロダクトコードを上書きする方法と、別ファイルに切り出す方式が選べる。

あくまでヘルパーなので、別ファイルにしてみる。

Do you want to overwrite the existing model files? Choose no to write to _ide_helper_models.php instead (yes/no) [no]:
 > no

方針次第だと思うけど、対象のファイルを .gitignore に入れておくとよさそう。

別の警告が。。

無事補完はできるようになったのだが、別の警告が出るようになってしまった。

ファイルを別にする方式の弊害っぽいが、 Multiple definitions exist for class .. と言われてしまう。

色々調べてみたけれども、対象の警告をオフることにした。(しかし敗北感が。。)

参考