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)もあわせて取得される。