2017-01-19 8 views
0

私はいくつかのコレクションをマージしようとしていますが、何らかの理由でこれを行うことはできません。私のコードは次のようになっています:Laravelはコレクションをマージできませんか?

$restaurant = \App\Restaurant::find(3); 
$images  = $restaurant->images; 
$userimages = $restaurant->userimages; 
$hours  = $restaurant->hours; 

$collectionMerge1 = $images->merge($userimages)->merge($hours); 
$collectionMerge2 = $restaurant->userimages->merge($hours)->merge($images); 
$collectionMerge3 = collect(array_merge($images->all(), $userimages->all(), $hours->all())); 

最後のものはマージです。以前のコレクションは、コレクションに含まれるすべてのアイテムを表示していません。どうしてこれなの?私は間違って何をしていますか? 画像を見ると、マージ1と2に欠けているオブジェクトがあることがわかります。これを行うにはいくつかの方法を試しましたが、最後のものだけが機能します。多分、マージメソッドがキーに問題がありますか?

enter image description here

答えて

0

自分の価値観のそれぞれは、実際に(関係を通じて確立)適切なコレクションを表すことを考えると、あなたはpush代わりのmergeを使用する必要があります。

$aggregates = collect([]); 
$aggregates ->push($images)->push($userImages)->push($hours); 
dd($aggregates); //as expected 
+0

を私は試みたが、あなたはプッシュを使用するとき、あなたは単一のものでコレクションをマージしません、代わりに、何をやっていることを追加することです:鍵ペアが既に一致したときにmergeが実際に特定の要素が上書きされるためですコレクションを追加し、それらをマージしないでください。 – suarsenegger

関連する問題