
CakePHPのfind条件に「OR」を指定する方法
2015/01/11
SQLで「OR」を使った条件式なんてのはささっと書けるのですが、CakePHPのfindの場合はどうするんだっけか?
ただそれだけの内容ですが、実際、ちょっとだけハマったので忘備録としてポスト。
topicsテーブルのsubjetカラムに「あ」、contentカラムに「い」を含んでいるものを抽出する条件として作成してみます。
[php]
$conditions = array(
'Topic.publish =' => 1,
'AND' => array(
'OR' => array(
array(
'Topic.subject like' => 'あ'
),
array(
'Topic.content like' => 'い'
),
),
),
);
[/php]
このように OR の内容を、配列で指定すればOK。
親配列(OR自体)のキーを OR とするのがポイント。
これで、以下の様なSQLとなります。
[sql]
SELECT ? FROM Topic WHERE Topic.publish = 1 AND ((Topic.subject like 'あ') OR (Topic.content like 'い'))
[/sql]
[tgAmazonItemLookup asin="4774153249" related="1"]
[tgAmazonItemLookup asin="B005JHKT3M" related="1"]