[CakePHP] find(all)でIN句を使ってデータを抽出する方法

CakePHPで複数のIDを指定して該当するデータを取得する方法についてです。
MySQLでは1つのカラムに対して複数の条件で検索するIN句が用意されており、CakePHPでもこのIN句を使います。
まずはMySQLのIN句の使い方を確認します。
idを複数の値で検索するには WHERE句で id IN(1,3,5,7) と指定します。
CakePHPでも同様の方法でIN句を使います。
具体的な使い方は下記のようになります。
IN句の使い方
条件のパラメータ部分に配列化されたデータを指定します。
1 2 3 4 5 6 7 8 9 10 |
//取得する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句というのも用意されており、こちらは指定した条件にあてはまらないものを抽出します。
1 2 3 4 5 6 7 8 9 10 11 12 |
//取得する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 に当てはまらないデータが抽出されます。
関連記事
- [MySQL]1カラムに登録されたカンマ区切りデータを検索・抽出する方法(FIND_IN_SET)
- [CakePHP] 独自のSQL文でプリペアドステートメントを使う方法
- [CakePHP] 独自のSQL文を利用する方法
- [CakePHP] 別モデルでページネーションを(pagination)行う方法
- アイキャッチ画像(サムネイル)を表示する関数 the_post_thumbnail()