在我的 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 */;
}
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top