【发布时间】:2021-10-15 11:28:58
【问题描述】:
我有一个模型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() 甚至根本无法识别。怎么了?
【问题讨论】:
-
没有错。一些类和方法将根据您的代码的功能和计算来创建。 PHPStorm 或任何其他 IDE 无法识别它们。但是,如果您知道该模型具有此方法,则使用它会很舒服。这不会造成任何问题。
-
这能回答你的问题吗? Eloquent ORM Code Hinting in PhpStorm
-
如果你搜索“phpstorm laravel scope”你会在这里看到很多答案。另请参阅jetbrains.com/help/phpstorm/laravel.html。
-
1) 没有真正的方法
emailLike()-- 它是一种神奇的方法(在运行时 Laravel 使用scopeEmailLike()代替)。尝试在类的 PHPDoc 中使用@method声明此类方法。 2) 考虑使用 Laravel Idea 插件——这是一个付费插件,但它为 Laravel 开发提供了很多功能,尤其是代码完成。它正在积极开发中。至少试一试。
标签: php laravel phpstorm phpdoc