スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

add,addAnd,addOrメソッドについて

actions.class.php内のpublic function executeIndex内の
add,addAnd,addOrメソッドの書き方は注意を要する。

[例1]
$c = new Criteria();
$c -> add(CommentPeer::ID,"1");
$c -> add(CommentPeer::ID,"2");
$c -> add(CommentPeer::ID,"3");
$this -> comment = CommentPeer::doSelect($c);

上記の場合は、最後のaddメソッドが有効になる。
where ID = "3"と書いたのと同じになる。

[例2]
$c = new Criteria();
$c -> add(CommentPeer::ID,"1");
$c -> addAnd(CommentPeer::ID,"2");
$this -> comment = CommentPeer::doSelect($c);

上記の場合は、ID = "1" AND ID = "2"と書いたのと同じになる。
$c -> addAnd(CommentPeer::ID,"1");
$c -> addAnd(CommentPeer::ID,"2");
と記述しても同様。

[例3]
$c = new Criteria();
$c -> add(CommentPeer::NICKNAME,"bbb");
$c -> add(CommentPeer::ID,"2");
$this -> comment = CommentPeer::doSelect($c);

上記の場合は、NICKNAME = "bbb" and ID = "2"と書いたのと同じになる。
(項目が異なるときに限ってandで結合される)

上記は、以下のように記述しても同じ結果が得られる。
$c = new Criteria();
$c1 = $c -> getNewCriterion(CommentPeer::ID,'2');
$c2 = $c -> getNewCriterion(CommentPeer::NICKNAME,'bbb');
$c1 -> addAnd($c2);
$c -> add($c1);
$this -> comment = CommentPeer::doSelect($c);

[例4]
$c = new Criteria();
$c -> add(CommentPeer::NICKNAME,"bbb");
$c -> addOr(CommentPeer::ID,"2");
$this -> comment = CommentPeer::doSelect($c);

上記は例3と同じ結果となる。
項目が異なると、addOrの指定は無効になり、addAndを
指定したのと同じになるようである。

[例5]
$c = new Criteria();
$c -> add(CommentPeer::ID,"1");
$c -> addOr(CommentPeer::ID,"2");
$this -> comment = CommentPeer::doSelect($c);

上記の場合は、where ID = "1" or ID = "2"と書いたのと
同じになる。

[例6]
$c = new Criteria();
$c -> add(CommentPeer::ID,"1");
$c -> addOr(CommentPeer::ID,"2");
$c -> add(CommentPeer::NICKNAME,"bbb");
$this -> comment = CommentPeer::doSelect($c);

上記の場合は、where (ID = "1" or ID = "2") and NICKNAME = "bbb"と
書いたのと同じになる。
$c -> add(CommentPeer::NICKNAME,"bbb");を
$c -> addAnd(CommentPeer::NICKNAME,"bbb");または、
$c -> addOr(CommentPeer::NICKNAME,"bbb");と指定しても同様。

addメソッドを複数指定した場合は、最終行のみ有効。
addAndを指定したからといって、and条件で結合されるとは限らない。
addOrを指定したからといって、or条件で結合されるとは限らない。

上記の点に注意すること。



スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

e.swan

Author:e.swan
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。