LoginSignup
0
0

More than 5 years have passed since last update.

CakePHP2のModel::find()で渡すconditionsにSQL文を混ぜ込む方法

Posted at

苦肉の策というか、完全にバッドノウハウだと思うけど、役に立つことあるので。
完全に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も混ぜ込めるようになってると楽なんだけどなぁ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0