苦肉の策というか、完全にバッドノウハウだと思うけど、役に立つことあるので。
完全にsql文を書いちゃうならModel::query()
が使えるけど conditionsにちょいややこしいSQLをまぜたいだけのときに使う手です。
$sql = '(key1, key2) IN ((1,2), (3, 4))';
$conditions = [
[
$sql . ' AND 1' => '1', // SQL文をconditionsに混ぜ込む苦肉の策
]
];
こんな感じで 配列キー側に ' AND 1
値に '1'
をつけてSQLを混ぜ込む。
さらにそれをひとつの配列にする(あとで$conditionsにORとかNOTつけたときに副作用でないように)
こうしとくとSQLに展開されたときにって感じに展開されるんで、SQL文で書いた条件が使える。
((key1, key2) IN ((1,2), (3, 4)) AND 1 = '1')
こんな変な書き方せずにconditionsにsqlも混ぜ込めるようになってると楽なんだけどなぁ。