CakePHP4で孫のリストをQueryで直接Entityに持たせる方法は無いでしょうか?
prefectures->cities->shops
という形でhasManyで繋げています。
やりたい事はprefectureにshopsの一覧を持たせる事です。
prefectures->shops
このような形でcitiesを飛ばして使いたい。
テーブル構造はこのような形で作っています。
prefecturesテーブル
id | name |
---|
citiesテーブル
id | prefecture_id | name |
---|
shopsテーブル
id | city_id | name | sort_order |
---|
現在は下記の様なコードで一度普通にcontainで取得した後にforeachで回して直接詰めた後、ソートするという書き方で書いているのですが、同じことをQueryから書く事は出来ないでしょうか?
もし可能であるならばその書き方を教えていただきたいです。
$prefectures = $this->Prefectures->find() ->contain( ['Cities', 'Cities.Shops'] ); foreach ($prefectures as $prefecture) { $prefectures['shops'] = []; foreach ($prefectures['cities'] as $cities) { foreach ($cities['shops'] as $shop) { $prefectures['shops'][] = $shop; } } uasort($prefectures['shops'], function ($a, $b) { return $a->sort_order < $b->sort_order; }); }
あなたの回答
tips
プレビュー