在控制器PhpStorm Laravel 5中找不到scopeMethods

在控制器PhpStorm Laravel 5中找不到scopeMethods,php,laravel,laravel-5,ide,phpstorm,Php,Laravel,Laravel 5,Ide,Phpstorm,我不熟悉PHP和Laravel,所以可能我做错了什么。我跟随Jeffrey Way的Laracasts教程,他创建了一个“查询范围”方法 当我在控制器中使用它时,它说它找不到它 在我的任务模型中,我有: public static function scopeCompleted( Builder $query ) { return $query->where( 'completed', 1 ); } 在我的控制器中,我有: $completed_tasks = Task::com

我不熟悉PHP和Laravel,所以可能我做错了什么。我跟随Jeffrey Way的Laracasts教程,他创建了一个“查询范围”方法

当我在控制器中使用它时,它说它找不到它

在我的任务模型中,我有:

public static function scopeCompleted( Builder $query )
{
    return $query->where( 'completed', 1 );
}
在我的控制器中,我有:

$completed_tasks = Task::completed()->get();
但PhpStorm会突出显示
已完成
,并显示错误:

“在App\Task中找不到方法“已完成”

我知道它正在寻找一个名为
scopeCompleted
的方法,但这不是在控制器中调用查询范围方法的方式

我是做错了什么,还是这只是PhpStorm中的一个缺陷


仅供参考:代码功能非常好。

这是因为在幕后,Laravel使用神奇的方法来解析您的范围

completed
方法实际上并不存在于您的模型中,因此从技术上讲,PHPStorm是正确的


如果您希望PHPstorm能够检测此范围,请安装到您的项目中。

“我是做错了什么,还是这只是PHPstorm中的一个缺陷?”这里没有PHPstorm缺陷。。除非您将IDE不知道特定框架(Laravel)如何发挥其隐藏的魔力视为缺陷。您要么使用已经提到的方法,要么(如果出于某种原因,这里无法帮助)使用PHPDoc comment来声明此类方法(例如,通过
@method
标记--),使用ide帮助器仍然无法解析范围。