如何在 PhpStorm 中导航 Laravel 模型范围

How to navigate Laravel model scopes in PhpStorm

我有一个模型 CheckingAccount,作用域为:

//scopes
public function scopeEmailLike(Builder $builder, $email)
{
    return $this->where($this->table . '.email', 'like', '%' . $email . '%');
}

public function scopePhoneLike(Builder $builder, $phone)
{
    return $this->where($this->table . '.phone', 'like', '%' . $phone . '%');
}

但 PhpStorm 无法在其他 类 中识别它们。例如在控制器中:

public function all($filters)
{
    return CheckingAccount::query()
        ->emailLike($filters['email'])
        ->phoneLike($filters['phone'])
        ->get();
}

它说方法 emailLike() 未找到并且 phoneLike() 甚至根本无法识别。怎么了?

正如 LazyOne 所说

  1. 没有真正的方法 emailLike() -- 它是一个神奇的方法(在运行时 Laravel 使用 scopeEmailLike() 代替)。尝试在 class 的 PHPDoc 中使用 @method 声明此类方法。 2) 考虑使用 Laravel Idea 插件——这是一个付费插件,但它为 Laravel 开发提供了很多功能,尤其是代码完成。它正在积极发展中。至少试一试。