为什么我的IDE自动完成findOrFail方法?

时间:2015-08-23 16:20:33

标签: laravel lumen

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

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

想知道流明中的某些东西是否指向基础模型类的更精简版本。但同样奇怪的是,当我运行它时,这种方法运行得很好 - 它只是似乎并不知道它的IDE。

enter image description here

更新

感谢@ joseph-silber关于Laravel plugin for PHPStorm的提示。我刚刚发现并安装了它。我没有立即看到任何可以在那里启用docblock生成的设置。

enter image description here

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

这为我的工匠命令列表以及其他一些选项添加了ide-helper:models选项。我跑了,它确实在docblock中生成了一些方法,但不是全部。

enter image description here

2 个答案:

答案 0 :(得分:7)

因为模型类没有findOrFail方法。

它仅在构建器上可用,它可以从模型的全部__call方法调用。

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

答案 1 :(得分:0)

使用query()方法,在那里User::query()->findOrFail(...)具有IDE自动完成功能,它等效于User::findOrFail(...),但在st-bnv中具有Laravel方法的自动完成功能