在我的Eloquent系列中,我想添加一个名为" editable"的额外列。 "可编辑的"应该包含在我在某些模型上运行的每个查询中。 "可编辑的"根据原始查询显示为true或false。
所以我有一个应该在我的模型上的每个查询中运行的查询。在我的集合中添加一个额外的列。 "可编辑"的值由原始查询确定。
这样做的最佳方式是什么?
答案 0 :(得分:2)
您可以在查询链中添加addSelect()
方法,以包含自定义属性..
像
这样的东西$results = YourModelClass::select("*")
->addSelect(DB::raw("IF(condition,1,0) AS editable"))
->get();
在上面的情况中,您将condition
替换为将作为查询的一部分在每行评估的相关SQL语句。如果该陈述为真,则为editable = 1
,如果为false,则返回到您的集合的每一行editable = 0
。
我不会复制/粘贴有关添加全局范围的文档,这些文档位于核心Laravel文档中,我相信您可以找到它。
答案 1 :(得分:-1)
您可以为模型添加自定义getter:
public function getEditableAttribute()
{
/* return result from your raw query here */;
}