如何使用模型的 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);
}
请注意,该函数只是在 Post
的 post_id
前面添加了 6 个零填充。
现在,是否可以在查询生成器中使用它?我试过以下方法:
Post::where(function($query) use ($keyword) {
$query->where('detail', 'LIKE', '%'. $keyword .'%')
->orWhereHas($query->getTicketIdAttribute(), 'LIKE', '%'. $keyword .'%');
});
我想要做的是有一个搜索引擎来寻找 Post
对象 if:
$keyword
匹配 Post
的 detail
或
- 如果
$keyword
匹配 getTicketIdAttribute()
正如 所指出的,我需要使用 PHP 的 LPAD()
重写代码,所以:
LPAD(id, 6, '0')
要在查询生成器中使用它,我需要使用 DB::raw
方法来应用它,因为没有现成可用的等效 LPAD()
方法。所以,像这样使用它:
DB::raw("LPAD(id, 6, '0')")
请注意,对于这种情况,这意味着模型的 getter 属性 不能 直接在查询生成器中使用,因此需要以这种方式应用它。
希望这对其他人有所帮助,感谢 的帮助。
下面描述的是我的 getter 在我的 Post
模型中:
public function getTicketIdAttribute() {
return str_pad($this->id, 6, '0', STR_PAD_LEFT);
}
请注意,该函数只是在 Post
的 post_id
前面添加了 6 个零填充。
现在,是否可以在查询生成器中使用它?我试过以下方法:
Post::where(function($query) use ($keyword) {
$query->where('detail', 'LIKE', '%'. $keyword .'%')
->orWhereHas($query->getTicketIdAttribute(), 'LIKE', '%'. $keyword .'%');
});
我想要做的是有一个搜索引擎来寻找 Post
对象 if:
$keyword
匹配Post
的detail
或
- 如果
$keyword
匹配getTicketIdAttribute()
正如 LPAD()
重写代码,所以:
LPAD(id, 6, '0')
要在查询生成器中使用它,我需要使用 DB::raw
方法来应用它,因为没有现成可用的等效 LPAD()
方法。所以,像这样使用它:
DB::raw("LPAD(id, 6, '0')")
请注意,对于这种情况,这意味着模型的 getter 属性 不能 直接在查询生成器中使用,因此需要以这种方式应用它。
希望这对其他人有所帮助,感谢