【问题标题】:scopeMethods not found in controller PhpStorm Laravel 5 [duplicate]在控制器 PhpStorm Laravel 5 中找不到 scopeMethods [重复]
【发布时间】:2017-03-16 00:30:56
【问题描述】:

我是 PHP 和 Laravel 的新手,所以也许我做错了什么。我正在关注 Jeffrey Way 的 Laracasts 教程,他创建了一个“查询范围”方法。

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

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

public static function scopeCompleted( Builder $query )
{
    return $query->where( 'completed', 1 );
}

在我的控制器中,我有:

$completed_tasks = Task::completed()->get();

但是completed 被 PhpStorm 高亮显示并出现错误:

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

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

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

仅供参考:代码运行良好。

【问题讨论】:

  • “我做错了什么还是这只是 PhpStorm 中的一个缺陷?” 这里没有 PhpStorm 缺陷.. 除非你计算 IDE 不知道特定的框架( Laravel)将他隐藏的魔法作为一个缺陷。您要么使用已经提到的github.com/barryvdh/laravel-ide-helper,要么(如果由于某种原因在这里无法提供帮助)使用 PHPDoc 注释来声明此类方法(例如,通过 @method 标签 -- phpdoc.org/docs/latest/references/phpdoc/tags/method.html

标签: php laravel laravel-5 ide phpstorm


【解决方案1】:

这是因为在幕后,Laravel 使用魔法方法来解析你的作用域。

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

如果您希望 PHPstorm 能够检测到此范围,请在您的项目中安装 https://github.com/barryvdh/laravel-ide-helper

【讨论】:

  • 使用 ide-helper 仍然无法解析范围。
猜你喜欢
  • 2016-02-16
  • 2016-03-08
  • 2016-01-11
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 2015-04-20
相关资源
最近更新 更多