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_full 和 available_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'];
希望对你有所帮助。
换句话说,假设我有这样的查询:
return Location::valid()
->with('owners', 'gardeners')
->withCount('gardeners')
->get();
那个 returns 一些 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
}
]
我想这与原始/连接/聚合有关...但我真的不明白该怎么做。任何帮助将不胜感激
编辑
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'];
希望对你有所帮助。