CakePHP の findBy で簡単な複数条件指定

CakePHP の findBy で簡単な複数条件指定

最近は CakePHP に触れる事が多くなってきています。

さて、CakePHP で DB からデータを取ってくる関数である「findBy」と「findAllBy」。
例えば、

// $name をキーにデータ取得
$this->User->findAllByName($name);

などと書けば、名前をキーにしてユーザのデータを取得できたりします。
ここで、複数の項目をキーにデータを取得したい時は、
このような書き方で取得する事ができます。

// $name と $status をキーにデータ取得
$this->User->findAllByNameAndStatus($name, $status);

さらに、OR で条件指定したい場合。

// $name と $status のどちらかをキーにデータ取得
$this->User->findAllByNameOrStatus($name, $status);

となります。とても便利ですね。
ちなみにこの関数、「And」と「Or」は混在できません。
飽くまでも、簡単な条件指定の時に使う物という認識が丁度いいと思います。

さて、ここでちょっと落とし穴。
この「FindByFooAndBar」という関数。
PHP4 で使おうとするとエラーになり、正常にデータを取得する事ができません。

PHP4でこの書き方をしたい場合は、

// $name と $status をキーにデータ取得
$this->User->findAllByName_And_Status($name, $status);

このように、「_(アンダーバー)」を間に挟むようにします。
PHP5 の環境から PHP4 の環境に移る事がある場合は覚えておくと良いですね。

photo
CakePHPガイドブック
安藤 祐介 新原 雅司 堂園 俊郎
毎日コミュニケーションズ 2007-10-25

by G-Tools , 2007/12/18

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

この記事を読んだ人にオススメ