Laravel Eloquent: 如何在查询响应中添加一列?

Laravel Eloquent: how to add a column to a query response?

换句话说,假设我有这样的查询:

return Location::valid()
    ->with('owners', 'gardeners')
    ->withCount('gardeners')
    ->get();

那个 returns 一些 json :

[
 {
   name: 'LocationA',
   nb_gardeners_max: 3,
   owners: [...],
   garderners: [...],
   garderners_count: 2
 }
]

在 json 响应中,我想添加一些自定义条目,例如 is_fullavailable_places:

[
 {
   name: 'LocationA',
   nb_gardeners_max: 3,
   owners: [...],
   garderners: [...],
   garderners_count: 2,
   ...
   is_full: false,
   available_places: 1
 }
]

我想这与原始/连接/聚合有关...但我真的不明白该怎么做。任何帮助将不胜感激

编辑

Minhajul 的回答确实很有用,但不可能对附加属性执行 WHERE 子句。

Location::where('is_full',true)->get() // NOT WORKING

虽然仍然可以对其执行 filter(),但我想使用 JOIN 来执行单个查询

为此,您可以添加在您的 database.To 中没有相应列的属性,只需修改您的模型

public function getIsFullAttribute()
{
    return $this->attributes['name'] == 'value';
}

创建此访问器后,您需要将其添加到您的模型中。

 protected $appends = ['is_full'];

希望对你有所帮助。