I've got several eager loaded
relations in Laravel 5.6
. I would like to change the array key name to a property on the eager loaded object.
So let's say I have eager loaded this:
How do I make sure that array key 0
and 1
become the name property ("COSTS
" and "SAIL_BOAT_FRIENDLY
") ?
Is that even possible?
-- EDIT
return Port::filter($filters)
->with('scores')
->actives()
->paginate(14);
Scores relation
public function scores()
{
return $this->hasMany(Score::class)
->select("id", "port_id", "name", DB::raw('AVG(score) as score'))
->groupBy('port_id', 'name');
}
You can use keyBy()
:
$ports = Port::filter($filters)
->with('scores')
->actives()
->paginate(14);
foreach($ports as $port) {
$port->setRelation('scores', $port->scores->keyBy('name'));
}