如何向 PhpStorm 提供提示以查找我的 Laravel 自定义查询生成器方法?

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,并获取该方法的用户列表,就像我可以使用其他完全交叉引用的类一样。

mik*_*n32 7

您需要使用非官方 @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)