在我的Eloquent集合中,我想添加一个名为"editable"的额外列。"可编辑"应该包含在我在某些模型上运行的每个查询中。"Editable"根据原始查询显示为真或假。
所以我有一个应该在我的模型上的每个查询中运行的查询。给我的收藏增加了一列。"editable"的值由原始查询决定。
最好的方法是什么?
您可以在查询链中添加一个addSelect()
方法,以包含自定义属性。
$results = YourModelClass::select("*")
->addSelect(DB::raw("IF(condition,1,0) AS editable"))
->get();
在上面的情况下,您将用相关的SQL语句替换condition
,该SQL语句将作为查询的一部分逐行计算。如果语句为真,则editable = 1
,如果为假,则每一行返回editable = 0
到您的集合。
编辑:我刚刚看到你想要这个每一个查询,所以你可能需要一个全局作用域/trait为你的模型,但上述技术包括额外的属性应该是正确的。
我不会复制/粘贴关于添加全局作用域的文档,它在Laravel的核心文档中,我相信你可以找到它。
你可以给你的模型添加一个自定义的getter:
public function getEditableAttribute()
{
/* return result from your raw query here */;
}