Изменить загруженные ключи массива - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть несколько eager loaded отношений в Laravel 5.6. Я хотел бы изменить имя ключа массива на свойство загруженного объекта.

Итак, допустим, я загружен так: enter image description here

Как сделать так, чтобы ключи массива 0 и 1 стали свойством name ("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');
}

1 Ответ

0 голосов
/ 07 сентября 2018

Вы можете использовать keyBy():

$ports = Port::filter($filters)
        ->with('scores')
        ->actives()
        ->paginate(14);

foreach($ports as $port) {
    $port->setRelation('scores', $port->scores->keyBy('name'));
}
...