为什么我的 IDE auto-completing 不是 findOrFail 方法?

Why isn't my IDE auto-completing the findOrFail method?

所以我创建了一个消息模型:

namespace App\Model;

use Illuminate\Database\Eloquent\Model;

class Message extends Model
{
    public function getName()
    {
        return $this->name;
    }

    public function setSortOrder($sortOrder)
    {
        $this->sort_order = $sortOrder;
        return $this;
    }
}

它似乎运行良好 - 我使用迁移创建了一些列,加载并保存了模型。

但是我的 IDE (PHP Storm) 似乎无法识别模型上的某些方法 - 即 findOrFail。不过它会自动完成 findOrNew

想知道 lumen 中的某些内容是否指向基础模型 stripped-down 的更多版本 class。但同样奇怪的是,当我 运行 它时,这个方法工作得很好——只是 IDE 似乎没有意识到它。

更新

感谢@joseph-silber 关于 Laravel plugin for PHPStorm 的提示。我刚刚找到并安装了它。我没有立即看到任何可以在其中启用文档块生成的设置。

在 Laravel 插件页面的注释中,它提到了 "Laravel IDE Helper Generator"。我搜索了一下,找到了我安装的 Laravel plugin by Haehnchen

这将 ide-helper:models 选项添加到我的 artisan 命令列表以及其他几个命令列表中。我 运行 它确实在文档块中生成了一些方法,但不是全部。

因为模型 class 没有 findOrFail 方法。

它仅在构建器上可用,它从模型的 catch-all __call 方法调用。


如果您希望 PHP Storm 帮助您,请尝试 Laravel plugin 生成 IDE classes。

使用 query() 方法,你有 IDE 自动完成 User::query()->findOrFail(...) 相当于 User::findOrFail(...) 但 st-bnv[= 中的 Laravel 方法有自动完成12=]