プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
CakePHP1.3系、IN句を使用する
行毎にチェックボックスがあってチェックされた行のみ処理をする、
みたいなことがやりたくなりました。

チェックされた行自体はcheckboxを配列にしてえいやって渡すとして
チェックされた行の検索は……やっぱIN句で検索(--?

ってのが経緯です(--)b

ほんでCakePHPのfind()でIN句の検索ってどーやんのよ?と思ったら
めっさ簡単でした。
パラメータを配列で渡せば良いらしいφ(--)

  $params = array(
              'conditions' => array('Hoge.column1' => 
array('a', 'b'))
            );
  $hoge = $this->Hoge->find('all', $params);



ちなみにNOT IN句を使いたい場合は


  $params = array(
              'conditions' => 
array('NOT' => array('Hoge.column1' => array('a', 'b')))
            );
  $hoge = $this->Hoge->find('all', $params);


だそーです。


おぉ、簡単\(--)/


……なのですが、私は世代的に
「IN句はできるだけEXISTS句に置き換えて使え」と言われた世代なので
微妙に落ち着かなかったり(笑)

確か副問い合わせがある場合の特定条件下では
IN句よりEXISTS句の方が速いんでしたっけ(--?
細かいことは分かりませんが、副問い合わせが絡んでいる場合は
EXISTS句で書いておいた方がIN句で書いておくよりも
怒られる可能性が低いと思います(-。-)ぼそっ
レスポンス改善とかしてるときはIN句で書いてる場所の方が
EXISTS句で書いてる場所より目をつけられやすいしっ(-。-)ぼそぼそっ

ついでなんでEXISTS句使った検索も調べてみたのですが、
find()でEXISTS句は用意されていないっぽいですね(--;
まぁfind系使おうと思うと、副問い合わせしたいとき面倒臭いけどさ。

そんなときは素直にquery()で直接SQL投げた方が良さそうです。

スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:CakePHP1.3系  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事