質問: collect([ ['id' => 1, 'title' => 'タイトル1', 'value' => 2,'name' => 'アイテム2'], ['id' => 2, 'title' => 'タイトル2', 'value' => 5,'name' => 'アイテム5'], ['id' => 3, 'title' => 'タイトル3', 'value' => 8,'name' => 'アイテム8'] ]); ``` foreachで回す方法しかないのでしょうか? まわりくどい方法は思いつくのですが Laravel自体はまだ始めたばっかで適切なコマンド・方法があるかと思った次第です。
回答: 探すのはcollectionにお任せするとしても、やっぱり大元をは自分で回さざるを得なさそうな・・ ``` $collection_c = $collection_a->map(function($_a,$_)use($collection_b){ $_a['title'] = $_a['name'] = null; //コレクションBから、b.id=a.idを探す if($_b = $collection_b->where('id', $_a['id'])->first()){ $_a['title']=$_b['title']; //Bの中のitemsもcollectionにして、そこからb.items.id = a.valueを探す $_items = collect($_b['items']); if($_b_item = $_items->where('id', $_a['value'])->first()){ $_a['name'] = $_b_item['name']; } } return $_a; }); ``` 自分でforeachの入れ子を沢山書くよりはマシなのかなーという感じでしょうかねぇ^^;