どうも、ざっくです。
今回も前回同様にfind()について書いていこうと思います。
find()になれてきたけど条件としてORやAND、INなど使いたいと思ったことはないですか?
それでは説明していきます。
・OR
$this->Profile->find('all', array( 'conditions' => array( 'OR' => array( 'user_id' => 1, 'age' => '20' ) ) ) )
→ SELECT * FROM profles AS Profile WHERE ((user_id = 1) OR (age = '20'));
このように書きます。連想配列として渡してあげれば解釈してくれるようですね。
$this->Profile->find('all', array( 'conditions' => array( 'OR' => array( array('Profile.user_id' => 10), array('Profile.user_id' => 20) ) ) ) )
→ SELECT * FROM profles AS Profile WHERE ((user_id = 10) OR (user_id = 20));
同じフィールドに対してのOR条件の付与はこのように書きます。
・AND
find('find', array( 'conditions' => array( array('OR' => array( 'user_id' => 1, 'age' => 30, ) ), array('OR' => array( 'user_id' => 5, 'age' => 20, ) ) ) ));
→ SELECT * FROM profles AS Profile WHERE ((user_id = 1) OR (age = 30)) AND ((user_id = 5) OR (age = 20));
基本的にANDは連想配列を列挙していく時に自動でついてくれます。
・IN
$ary = array(11, 22, 33); $this->find('all', Array('conditions' => Array('user_id' => $ary)));
上記のように配列をコンディションに設定してあげることで自動的にINをつけてSQLを発行してくれます。
数あるうちの代表的ものだけ条件指定の方法を説明しましたが、
どれも共通しているのは、Cakeさんが解釈できるようにconditionを設定してあげる必要があるということですね。
それではまた次回!!ありがとうございましたー