No.224
【CakePHP3】containでアソシエーションを辿る
containで芋づる式にテーブルを取得したい
CakePHP3は便利だけど機能多すぎて憶えること多すぎ。
とりあえず備忘録的にメモ。
containで取得できる情報
containで取得できるモデル(テーブル)はそのモデルにアソシエーションが設定されているテーブルのみ。
ただ、アソシエーションされているテーブルにさらにアソシエーションされているモデルがあった場合は、それも指定することで取得することができる。
例えば例として
モデルA
アソシエーション → モデルB
モデルB
アソシエーション → モデルC
モデルC
アソシエーション → モデルD
とあった場合、
$this->model->find()
->contain([モデルA.モデルB.モデルC.モデルD])
と指定することでモデルDまで一気に取得することができる。このとき、途中のモデル(A~C)もあわせて取得される。