CXJ*_*CXJ 3 php phpstorm laravel
我在 Laravel 中使用自定义查询构建器,如下所示:
class MyModel extends Model {
public function newEloquentBuilder($query): MyModelQueryBuilder
{
return new MyModelQueryBuilder($query);
}
}
Run Code Online (Sandbox Code Playgroud)
class MyModelQueryBuilder extends Illuminate\Database\Eloquent\Builder {
// various query methods...
}
Run Code Online (Sandbox Code Playgroud)
由于 Laravel 所谓的 Facades 和魔术方法的使用,PhpStorm 无法在我的自定义查询生成器中找到对这些方法的引用。
我使用barryvdh/laravel-ide-helper包为我的模型生成提示,因此它们的方法是可找到和可提示的。如何以简单、可维护的方式为我的查询生成器类执行相同的操作?
例如,我希望能够在查询生成器方法上按 Command-B,并获取该方法的用户列表,就像我可以使用其他完全交叉引用的类一样。
您需要使用非官方 @mixinPHPDoc 指令将类方法添加到模型中。PhpStorm 已经支持它好几年了。特征可能是在多个模型上执行此操作的最简单方法:
/**
* @mixin MyModelQueryBuilder
*/
trait HasCustomBuilder {
public function newEloquentBuilder($query): MyModelQueryBuilder
{
return new MyModelQueryBuilder($query);
}
}
Run Code Online (Sandbox Code Playgroud)
class MyModel extends Model {
use HasCustomBuilder;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
391 次 |
| 最近记录: |