2017-02-27 214 views
3

我试图在Laravel 5.3中追加一个Eloquent集合与另一个Eloquent集合。追加另一个集合Laravel集合

这是我迄今所做的:

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

$entries->merge($posts); 

我试图用merge()像上面的代码,但看来我只能坚持这样那样的问题(因为其中一些具有相同id具有相同的值):

Collection merge eating up some rows

任何想法?

+0

什么是存储在第一集合里面?没有任何代码很难回答 – ad4s

+0

我更新了我的问题 – tronic

+0

尝试迭代第二个集合并将每个元素推送到第一个集合上。 https://laravel.com/docs/5.4/collections#method-push – ad4s

回答

7

我相信你可以合并两个雄辩的集合是这样的:

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

此之后,它是一个collection所有条目。

+0

这似乎是工作,我很抱歉添加额外的问题,但如果我有3个雄辩的集合?让我们说'$ entries','$ posts'和'$ users'?每次在合并另一个之前是否需要调用'toBase()'?或者直接'merge()'? – tronic

+1

我想你每次想要合并到你当前的集合时都必须调用'toBase()'。但你最好的选择是尝试一个小原型:) –

0

合并()方法接受一个数组,所以你必须做一些像

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

Laravel Collections: merge() method

+0

我得到了一个错误'调用成员函数getKey()array' – tronic

+0

当然,你必须把Illuminate \ Database \ Eloquent \ Collection变成一个Illuminate \支持\收藏:类似这样的: 'collect($ entries) - > merge($ posts-> toArray());' [更多信息](https://github.com/laravel/framework /问题/ 9163) – Jeff