【问题标题】:Override eloquent relationship result data覆盖 eloquent 关系结果数据
【发布时间】:2019-10-14 16:26:39
【问题描述】:

我在我的项目中使用Laravel-Metable 包。此包返回集合对象,使用键 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'];

【问题讨论】:

    标签: laravel eloquent laravel-5.8


    【解决方案1】:

    您可以为此使用集合 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
    

    【讨论】:

    • 我使用的是您作为$metaItems 结果提供的屏幕截图,并将代码应用于这些屏幕截图。但是你可以在模型中添加它。
    • 现在你的结果就像this 但我需要result 不使用父数组键上的元名称。我需要将键替换为默认数组编号。 @纳科夫
    • @AndreasHunter 如果有帮助,请考虑接受它:)
    猜你喜欢
    • 1970-01-01
    • 2018-01-11
    • 2021-01-26
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 2022-12-09
    相关资源
    最近更新 更多