【问题标题】:Can I use Mutators in Query?我可以在查询中使用 Mutators 吗?
【发布时间】:2018-08-10 15:33:11
【问题描述】:

我在我的模型中创建了一个 mutator。

Class Client {
   protected $fillable = ['name', 'age']

   public function getIndustryAttribute() {
      // some evaluations;

      return "Programmer"
   }
}

现在,我正在尝试使用Client::where('industry', "Programmer")->get() 来获取价值。这可能吗?

请记住,这是一个完全伪代码,以便于解释。由于计划错误,我最终以这种方式结束..

【问题讨论】:

  • 正如@gbalduzzi 的回答所指出的那样,您不能为此使用 Laravel 的 mutators,它们是在查询返回的 Model 对象之后评估的。但是,有一种方法可以实现这一点,具体取决于您的数据库平台。 MySQL 提供了一个名为 Generated Columns 的东西,它可能是你的解决方案。不过,我不能代表任何其他受支持的数据库。当然,这完全取决于您需要什么样的逻辑,但这可能不可行。

标签: laravel laravel-5.6 laravel-query-builder mutators


【解决方案1】:

不,你不能那样做。

在执行查询之后评估Mutators。

查询时可以做的是定义正确的scopes

这是不可能的,因为在查询时应用 mutator 会非常耗费性能:它相当于循环整个表并对每一行执行详细说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-02
    • 2011-07-22
    • 2023-04-08
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多