<div class="section">
modelファイルのお話。
SELECT * FROM hoges WHERE created BETWEEN '2010-03-01 00:00:00' AND '2010-03-31 23:59:59';
みたいなSQLをCakePHPのfindメソッドを利用して発行したいときに、
BETWEENの指定で引っかかったのでメモ。
調べたところ、そもそもBETWEEN句が利用できない仕様っぽいので、範囲指定でやろうと思い下記のプログラムを書いた。
$cond = array( 'Hoge.created' => '>=' . date('Y-m-01 00:00:00'), 'Hoge.created' => '<=' . date('Y-m-t 23:59:59'), ); $r = $this->Hoge->find('all', array('conditions' => $cond));
これだとうまくいかない。
SELECT * FROM hoges WHERE created <= '2010-03-31 23:59:59';
なぜかわからないが、同一フィールドに対する条件を複数書くと、最後に書いたものだけが生きるみたいです。
これは、フィールド名の後ろに半角スペースを入れるだけで回避できる。
$cond = array( 'Hoge.created' => '>=' . date('Y-m-01 00:00:00'), 'Hoge.created ' => '<=' . date('Y-m-t 23:59:59'), ); $r = $this->Hoge->find('all', array('conditions' => $cond))
なんか気持ち悪いね。。。