php 将Laravel集合附加到另一个集合

uurity8g  于 2023-03-28  发布在  PHP
关注(0)|答案(6)|浏览(148)

我试图在Laravel 5.3中添加一个Eloquent集合和另一个Eloquent集合。
这是我目前所做的:

$entries = Entry::all();
$posts   = Post::all();

$entries->merge($posts);

我尝试使用上面代码中所示的merge(),但似乎我遇到了这种问题(因为其中一些具有相同值的相同id):
Collection merge eating up some rows
有什么想法吗

b4qexyjb

b4qexyjb1#

对于〈5.4的版本,您可以通过使用toBase重置键来合并两个有说服力的集合,如下所示:

$mergedCollection = $entries->toBase()->merge($posts);

对于〉= 5.4的版本,您可以使用concat,如Jason所建议的。

hlswsv35

hlswsv352#

我相信你可能正在寻找concat()。这将把一个容器附加到另一个容器的末尾,而不管它们的键是什么。

$mergedCollection = $entries->concat($posts);
os8fio9y

os8fio9y3#

以下是链接:Laravel7.X

$collection = collect(['Desk', 'Chair']);

$merged = $collection->merge(['Bookcase', 'Door']);

$merged->all();
a11xaf1n

a11xaf1n4#

如果您需要合并big_products和small_products:

$products = $bigProducts->values()->merge($smallProducts->values());

merge方法将给定数组或集合与原始集合合并。如果给定项中的字符串键与原始集合中的字符串键匹配,则给定项的值将覆盖原始集合中的值。
"但是"

如果给定项的键是数字,则值将被追加到集合的末尾:

因此,您所需要的就是摆脱键,您可以使用->values()函数来完成。
在Laravel-6上测试

xdnvmnnf

xdnvmnnf5#

merge()方法接收一个数组,因此必须执行如下操作

$entries->merge($posts->toArray());

Laravel集合:merge()方法

bprjcwpo

bprjcwpo6#

这就是我使用循环时的效果:

$collection= collect([]);
 foreach ($otherCollection as  $other)
 $collection= $collection->merge($other);

相关问题