默认情况下,根据原始查询向Eloquent Collection添加行

时间:2014-07-29 08:16:07

标签: sql orm laravel-4 eloquent

在我的Eloquent系列中,我想添加一个名为" editable"的额外列。 "可编辑的"应该包含在我在某些模型上运行的每个查询中。 "可编辑的"根据原始查询显示为true或false。

所以我有一个应该在我的模型上的每个查询中运行的查询。在我的集合中添加一个额外的列。 "可编辑"的值由原始查询确定。

这样做的最佳方式是什么?

2 个答案:

答案 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 */;
}