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

Hak*_*Hak 3 sql orm eloquent laravel-4

在我的 Eloquent 集合中,我想添加一个名为“可编辑”的额外列。“可编辑”应该包含在我在某些模型上运行的每个查询中。“可编辑”根据原始查询显示为真或假。

因此,我有一个应该在模型上的每个查询中运行的查询。在我的收藏中添加一个额外的列。“可编辑”的值由原始查询确定。

做这个的最好方式是什么?

Seb*_*rre 5

您可以addSelect()向查询链添加一个方法以包含自定义属性。

就像是

$results = YourModelClass::select("*")
    ->addSelect(DB::raw("IF(condition,1,0) AS editable"))
    ->get();
Run Code Online (Sandbox Code Playgroud)

在上述情况下,您将替换condition为相关的 SQL 语句,该语句将作为查询的一部分按行进行评估。如果该语句为真,则将每一行返回到您的集合中editable = 1;如果为假,则将editable = 0每一行返回到您的集合中。

编辑:我刚刚看到您希望在每个查询上都有此功能,因此您可能需要模型的全局范围/特征,但上述包含额外属性的技术应该是正确的。

我不会复制/粘贴有关添加全局作用域的文档,这些文档位于 Laravel 核心文档中,我相信您可以找到它。