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

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

12 回閲覧されました

みなさんこんにちは、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();