默认情况下根据原始查询将行添加到 Eloquent Collection
题
在我的 Eloquent 集合中,我想添加一个名为“可编辑”的额外列。“可编辑”应该包含在我在某些模型上运行的每个查询中。“可编辑”根据原始查询显示为真或假。
因此,我有一个应该在模型上的每个查询中运行的查询。在我的收藏中添加一个额外的列。“可编辑”的值由原始查询确定。
做这个的最好方式是什么?
解决方案
你可以添加一个 addSelect()
查询链的方法以包含自定义属性。
就像是
$results = YourModelClass::select("*")
->addSelect(DB::raw("IF(condition,1,0) AS editable"))
->get();
在上述情况下,您将替换 condition
使用相关的 SQL 语句,该语句将作为查询的一部分按行进行评估。如果该陈述为真,那么 editable = 1
如果为假那么 editable = 0
返回到您的集合的每一行。
编辑:我刚看到你想要这个 每一个 查询,因此您可能需要模型的全局范围/特征,但上述包含额外属性的技术应该是正确的。
我不会复制/粘贴有关添加全局作用域的文档,这些文档位于 Laravel 核心文档中,我相信您可以找到它。
其他提示
您可以将自定义getter添加到您的型号:
public function getEditableAttribute()
{
/* return result from your raw query here */;
}
. 不隶属于 StackOverflow