【问题标题】:How to navigate Laravel model scopes in PhpStorm如何在 PhpStorm 中导航 Laravel 模型范围
【发布时间】: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


【解决方案1】:

正如 LazyOne 所说的

  1. 没有真正的方法 emailLike() - 它是一种神奇的方法(在运行时 Laravel 使用 scopeEmailLike() 代替)。尝试在类的 PHPDoc 中使用 @method 声明此类方法。 2) 考虑使用 Laravel Idea 插件——它是付费插件,但它为 Laravel 开发提供了很多功能,尤其是代码完成。它正在积极开发中。至少试一试。

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 2018-08-16
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多