更改预先加载的数组键

Change eagerloaded array keys

我在 Laravel 5.6 中有几个 eager loaded 关系。我想在急切加载的对象上将数组键名称更改为 属性。

所以假设我已经急切地加载了这个:

如何确保数组键 01 成为名称 属性(“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'));
}