« PHPカンファレンス1日目に行ってきたよ[pcj09]明日はPHPカンファレンス2009 »

CakePHPの条件で複数orを使う方法

パーマリンク 2009/09/04 07:37:55 著者: あつ メール
カテゴリ: PHP, CakePHP

CakePHPの条件文でorを使うときは、

'conditions' => array(
    'or' => array(
        'type1' => $data,
        'type2' => $data,
    ),
),


このように書くと思います。

さらに複数のorを使いたいときは、

'conditions' => array(
    'or' => array(
        'type1' => $data,
        'type2' => $data,
    ),
    'or' => array(
        'param1' => $data,
        'param2' => $data,
    ),
),


のように書いてもうまくいきません。

ではどうするか?

'conditions' => array(
    'or' => array(
        'type1' => $data,
        'type2' => $data,
    ),
    'OR' => array(
        'param1' => $data,
        'param2' => $data,
    ),
),

このように片方のorを大文字にしてあげると、別物と判断されて期待通りの動作をしてくれました。
・・・・・こんな対応方法でいいのか???

【2009/9/5追記】
上記方法はやはり良くないです。
正しくはコメントでいただいた方法でできますので、そちらをご覧ください。

【2010/3/3追記】
コメントをDISQUSに変更したのでコメントが見えない状態でした。
こちらがそのコメントになります。

複数ORを使うときは、arrayで括ってこんな感じですね。3個でも4個でも繋げれます。

$conditions = array(
    array('or' => array(
        'key1' => 'val1',
        'key2' => 'val2',
    )) ,
    array('or' => array(
        'key3' => 'val3',
        'key4' => 'val4',
    ))
);
CakePHP 1.2ガイドブック

この記事へのトラックバック アドレス

トラックバックURL(右クリックでURLのコピーをしてください)

2 コメント

コメント from: nojimage [訪問者] · http://php-tips.com/
複数ORを使うときは、arrayで括ってこんな感じですね。3個でも4個でも繋げれます。

$conditions = array(
array('or' => array(
'key1' => 'val1',
'key2' => 'val2',
)) ,
array('or' => array(
'key3' => 'val3',
'key4' => 'val4',
))
);
2009/09/04 @ 10:24
コメント from: [訪問者]
>nojimageさん
ありがとうございます。
上記方法でできました。

また、cakephperさんもtwitterで教えていただき、感謝です。
2009/09/05 @ 06:31

この投稿にはモデレーション待ちのフィードバックが 2 件あります....

コメントを残す


頂いたメールアドレスはこのサイト上には表示されません

頂いたURLは表示されます。
(改行が自動で <br /> になります)
(Name, email & website)
(ユーザに、メッセージ・フォームを通じた連絡を許可します (あなたのメール・アドレスは表示されません))

あつ

Facebookやってます

愛知県名古屋市在住のWEBシステム屋(SE・プログラマ)。株式会社一六社(いちろくしゃ)所属。PHP、 CakePHPを利用して日々開発中。WEBで地域活性化を目指します。好き:フットサル/GTD/Mac/ 住んだことのある場所:一宮(愛知)、豊田(愛知)、浜松(静岡)、浦添(沖縄)、中津川(岐阜)、名古屋(愛知)

検索

タグクラウド

勉強会

欲しい物リストの全て

レコメンデーションエンジン

16ブログ     free blog