前提・実現したいこと
以下リンクSUUMOのような構造を作る際に最もシンプルで早い方法が知りたい
SUUMO
このような画面は物件に紐づく部屋をJOINでひろってきて、Viewでこのように表示するとスムーズかと考えていますが、Viewに渡すまでのコントローラー・モデルをどうもスッキリシンプルに書くことができません。
View
laravel
1 <article class="place-article"> 2@foreach($places as $place) 3 <div class='place-wrapper'> 4 <h2>{{$place['name']}}</h2> 5 @foreach($place['area'] as $area) 6 <div class='place-areas'> 7 <h3>{{$area['name']}}</h3> 8 </div> 9 @endforeach 10 </div> 11@endforeach 12 </article>
テーブル構成はこのようなイメージです。
placesテーブル
こういったパターンはよくありそうなので、何かシンプルな配列の整形方法があれば教えていただけると嬉しいです。
発生している問題・該当のソースコード
こちらのコードですと、頻繁にDBへのアクセスを行うため問題があるのではないかと感じています。
model
1 2public function get() 3 { 4 $places = DB::table('places p') 5 ->select('p.id', 'p.name', 'p.image') 6 ->where('status', 1) 7 ->orderBy('id', 'DESC') 8 ->get(); 9 10 foreach($places AS $key => $value) 11 { 12 $places[$key]['areas'][] = DB::table('place_areas')->select('*') 13 ->where('place_id', $rc['id'])->get(); 14 } 15 return $places; 16 } 17
試したこと
php
1 $results = DB::table('places p') 2 ->select('p.id', 'p.name', 'p.image', 'pa.name', 'pa.image') 3 ->leftJoin('place_areas AS pa', 'p.id', '=', 'pa.place_id') 4 ->where('p.status', 1) 5 ->orderBy('id', 'DESC') 6 ->groupBy('p.id') 7 ->get(); 8
を試してたりしましたが、部屋だけを配列にできずに困っています。
補足情報(FW/ツールのバージョンなど)
PHP: 7.3
Laravel: 5.5
MySQL: 5.7
お手数ですが、どうぞよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/19 11:12