我试图在Laravel 5.3中添加一个Eloquent集合和另一个Eloquent集合。
这是我目前所做的:
$entries = Entry::all();
$posts = Post::all();
$entries->merge($posts);
我尝试使用上面代码中所示的merge()
,但似乎我遇到了这种问题(因为其中一些具有相同值的相同id
):
Collection merge eating up some rows
有什么想法吗
我试图在Laravel 5.3中添加一个Eloquent集合和另一个Eloquent集合。
这是我目前所做的:
$entries = Entry::all();
$posts = Post::all();
$entries->merge($posts);
我尝试使用上面代码中所示的merge()
,但似乎我遇到了这种问题(因为其中一些具有相同值的相同id
):
Collection merge eating up some rows
有什么想法吗
6条答案
按热度按时间b4qexyjb1#
对于〈5.4的版本,您可以通过使用toBase重置键来合并两个有说服力的集合,如下所示:
对于〉= 5.4的版本,您可以使用
concat
,如Jason所建议的。hlswsv352#
我相信你可能正在寻找
concat()
。这将把一个容器附加到另一个容器的末尾,而不管它们的键是什么。os8fio9y3#
以下是链接:Laravel7.X
a11xaf1n4#
如果您需要合并big_products和small_products:
merge方法将给定数组或集合与原始集合合并。如果给定项中的字符串键与原始集合中的字符串键匹配,则给定项的值将覆盖原始集合中的值。
"但是"
如果给定项的键是数字,则值将被追加到集合的末尾:
因此,您所需要的就是摆脱键,您可以使用
->values()
函数来完成。在Laravel-6上测试
xdnvmnnf5#
merge()方法接收一个数组,因此必须执行如下操作
Laravel集合:merge()方法
bprjcwpo6#
这就是我使用循环时的效果: