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

2番目のコレクションを繰り返して、各要素を最初のコレクションにプッシュしてみてください。 https://laravel.com/docs/5.4/collections#method-push – ad4s

答えて

7

は、私はあなたがこのような2つの雄弁なコレクションをマージすることができると信じて:この後

$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()関数を呼び出すときにエラーが発生しました – tronic

+0

Illuminate \ Database \ Eloquent \ Collectionをイルミネーション\ Support \ Collection:次のようなものです: 'collect($ entries) - > merge($ posts-> toArray());' [詳細はこちら](https://github.com/laravel/framework)/issues/9163) – Jeff

関連する問題