CakePHPで複数のIDを指定して該当するデータを取得する方法についてです。
MySQLでは1つのカラムに対して複数の条件で検索するIN句が用意されており、CakePHPでもこのIN句を使います。
まずはMySQLのIN句の使い方を確認します。
MySQLのIN句の書式
SELECT * FROM posts WHERE id IN(1,3,5,7);
idを複数の値で検索するには WHERE句で id IN(1,3,5,7) と指定します。
CakePHPでも同様の方法でIN句を使います。
具体的な使い方は下記のようになります。
IN句の使い方
条件のパラメータ部分に配列化されたデータを指定します。
//取得するIDを配列形式で準備 $params = array(1,2,3,5,7,9); //条件文を作成 $condition=array( 'conditions'=>array('Post.id'=>$params) ); //findの実行 $data=$this->Post->find('all',$conditions);
これだけで、IDが 1,2,3,5,7,9 のデータが取得できます。楽ですね!
NOT IN句
IN句の逆を行うNOT IN句というのも用意されており、こちらは指定した条件にあてはまらないものを抽出します。
//取得するIDを配列形式で準備 $params = array(1,2,3,5,7,9); //条件文を作成 $condition=array( 'conditions' => array( 'NOT' => array('Post.id' => $params) ) ); //findの実行 $data=$this->Post->find('all',$conditions);
これでPostモデルのIDが 1,2,3,5,7,9 に当てはまらないデータが抽出されます。