如何使用模型的 getter 属性在查询生成器中使用

How to use Model's getter Attribute to use in Query Builder

下面描述的是我的 getter 在我的 Post 模型中:

public function getTicketIdAttribute() {
   return str_pad($this->id, 6, '0', STR_PAD_LEFT);
}

请注意,该函数只是在 Postpost_id 前面添加了 6 个零填充。

现在,是否可以在查询生成器中使用它?我试过以下方法:

Post::where(function($query) use ($keyword) {
   $query->where('detail', 'LIKE', '%'. $keyword .'%')
         ->orWhereHas($query->getTicketIdAttribute(), 'LIKE', '%'. $keyword .'%');
});

我想要做的是有一个搜索引擎来寻找 Post 对象 if:

  1. $keyword 匹配 Postdetail

  1. 如果 $keyword 匹配 getTicketIdAttribute()

正如 所指出的,我需要使用 PHP 的 LPAD() 重写代码,所以:

LPAD(id, 6, '0')

要在查询生成器中使用它,我需要使用 DB::raw 方法来应用它,因为没有现成可用的等效 LPAD() 方法。所以,像这样使用它:

DB::raw("LPAD(id, 6, '0')")

请注意,对于这种情况,这意味着模型的 getter 属性 不能 直接在查询生成器中使用,因此需要以这种方式应用它。

希望这对其他人有所帮助,感谢 的帮助。