gpt4 book ai didi

laravel - 向 Laravel 集合添加新属性

转载 作者:行者123 更新时间:2023-12-02 20:02:18 28 4
gpt4 key购买 nike

我访问了几个这样的集合,

    $articleActions = EloArticleReferenceAction
::where('file', '=', $file)
->get()
->keyBy('type');

$referencesWithValidDois = EloDoi
::where('file', '=', $file)
->get();

我想合并它们。我不能使用 merge 因为两个对象中的某些 ID 相似,因此一个会覆盖另一个。相反,我这样做:

    $response = collect();

foreach ($articleActions as $articleAction) {
$response->push($articleAction);
}

foreach ($referencesWithValidDois as $referencesWithValidDoi) {
$response->doi->push($referencesWithValidDoi);
}

但是它在这里中断了。而当我做这样的事情时:

    $response = collect();

foreach ($articleActions as $articleAction) {
$response->push($articleAction);
}

$response['doi'] = [];

foreach ($referencesWithValidDois as $referencesWithValidDoi) {
$response['doi'] = $referencesWithValidDoi;
}

它有点管用,但它会发回一个像这样的对象:

img

其中 doi 属性在迭代中被当前的 $referencesWithValidDoi 覆盖。

因此,目前,它被发送回:

    0: {...},
1: {...},
2: {...},
3: {...},
doi: {...}

但是我该如何写它,以便它被发回:

    0: {...},
1: {...},
2: {...},
3: {...},
doi: {
0: {...},
1: {...},
2: {...},
...
}

编辑:这样做,

    $response = collect();

foreach ($articleActions as $articleAction) {
$response->push($articleAction);
}

$response['doi'] = [];

foreach ($referencesWithValidDois as $referencesWithValidDoi) {
$response['doi'][] = $referencesWithValidDoi;
}

抛出错误:

间接修改Illuminate\Support\Collection的重载元素没有效果

最佳答案

在 laravel 集合的方式中,正确的做法如下,

$response = $articleCollection->put('doi', $referencesWithValidDois);

关于laravel - 向 Laravel 集合添加新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55578545/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com