2017-02-27 217 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