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

时间:2017-04-30 16:30:59

标签: laravel eloquent query-builder

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

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

返回一些json:

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

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

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

我想它与raw / join / aggregate有关...但我真的不明白该怎么做。任何帮助将不胜感激

修改

Minhajul答案非常有用,但是无法对附加属性执行WHERE子句。

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

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

1 个答案:

答案 0 :(得分:5)

为此,您可以添加数据库中没有相应列的属性。为此,您需要修改模型所需的全部内容

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

创建此访问者后,您需要在模型中添加它。

 protected $appends = ['is_full'];

希望它会对你有帮助。