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