CakePHP3でcontainに検索条件を追加して絞り込む方法

93 回閲覧されました
みなさんこんにちは、jonioです。
今回はCakePHPでcontainの対象のテーブルに対して条件をつけて絞り込む方法の解説です。
CakePHPのバージョン
3.6です。
条件で絞り込む
絞り込む条件をログインユーザーのidとします。
コードを下記にします。
$this->ModelAs->find()->contain([
'ModelBs' => function ($q) {
return $q->where(['id' => $this->Auth->user('id')]);
},
])->toArray();
containを使った時に絞り込みをするには2行目の「=> function」以下の記述で絞り込みができます。
例えば下記のコードのようにuseを使うこともできます。
$login_user_id = 2;
$this->ModelAs->find()->contain([
'ModelBs' => function ($q) use ($login_user_id) {
return $q->where(['id' => $login_user_id]);
},
])->toArray();