更改预先加载的数组键
Change eagerloaded array keys
我在 Laravel 5.6
中有几个 eager loaded
关系。我想在急切加载的对象上将数组键名称更改为 属性。
所以假设我已经急切地加载了这个:
如何确保数组键 0
和 1
成为名称 属性(“COSTS
”和“SAIL_BOAT_FRIENDLY
”)?
这可能吗?
-- 编辑
return Port::filter($filters)
->with('scores')
->actives()
->paginate(14);
分数关系
public function scores()
{
return $this->hasMany(Score::class)
->select("id", "port_id", "name", DB::raw('AVG(score) as score'))
->groupBy('port_id', 'name');
}
您可以使用 keyBy()
:
$ports = Port::filter($filters)
->with('scores')
->actives()
->paginate(14);
foreach($ports as $port) {
$port->setRelation('scores', $port->scores->keyBy('name'));
}
我在 Laravel 5.6
中有几个 eager loaded
关系。我想在急切加载的对象上将数组键名称更改为 属性。
所以假设我已经急切地加载了这个:
如何确保数组键 0
和 1
成为名称 属性(“COSTS
”和“SAIL_BOAT_FRIENDLY
”)?
这可能吗?
-- 编辑
return Port::filter($filters)
->with('scores')
->actives()
->paginate(14);
分数关系
public function scores()
{
return $this->hasMany(Score::class)
->select("id", "port_id", "name", DB::raw('AVG(score) as score'))
->groupBy('port_id', 'name');
}
您可以使用 keyBy()
:
$ports = Port::filter($filters)
->with('scores')
->actives()
->paginate(14);
foreach($ports as $port) {
$port->setRelation('scores', $port->scores->keyBy('name'));
}