覆盖 eloquent 个关系结果数据

Override eloquent relationship result data

我在我的项目中使用 Laravel-Metable 包。此包 return 集合对象使用键 meta 名称和值 eloquent 对象。

Here可以看到打包数据结果截图

如何覆盖结果数据并获取此类数组数据:

$meta = [
    [
        'id' => 1,
        'key' => "Meta Name",
        'value' => "Meta Value"

    ],

    [
        'id' => 2,
        'key' => "Meta Name",
        'value' => "Meta Value"

    ],
];

我将使用延迟加载来加载我的模型元数据:

use Metable;

protected $with = ['meta'];

您可以为此使用集合 map 方法,因此它应该是这样的:

$result = $metaItems->map(function($meta) {
    return [
        'id' => $meta->id,
        'key' => $meta->key,
        'value' => $meta->value
    ];
})->values();

// then $result->toArray(); should give you the expected result