CakePHP3のQueryBuilderにおけるアソシエーションの条件動的変更方法

Table of Contents

CakePHPってちょっと変わったことをやろうとすると情報が少なくて困りますね。

やりたいことは明確で、投げたいSQLも分かっているのに、CakePHPでのやり方が分からない!

という苦しい時間を費やすことがままあります。

今回はQueryBuilderを使った場合における、アソシエーションの条件の動的変更方法です。

例えば、テーブルA(table_A)と結合するテーブルB(table_B)を通常のアソシエーション条件に加えて、プログラム内の変数($variable)を用い動的にSQLを生成したい場合、以下のようにconditionsを階層化すればうまくいきます。

$this->table_A = TableRegistry::get('table_A');
$results = $this->table_A->find()->contain(['table_B'=>['conditions'=>['table_B.column_b' => $variable]]]);

配列化すればいいわけですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール