CakePHPの複雑な検索'OR'演算子がnullで正しく機能していません...
$conditions = array(
'Person.id' => array(2, 4, 1, 23, 45, 11),
'OR' => array(
array(
array('NOT' => array('Person.image' => null)),
array('NOT' => array('Person.image' => '')),
),
array(
array('NOT' => array('Person.photos' => null)),
array('NOT' => array('Person.photos' => '')),
)
)
);
以下のような対応するケーキSQLダンプ出力クエリ
SELECT `Person`.`id`, `Person`.`created`, `Person`.`modified`
FROM `people` AS `Person` WHERE `Person`.`id` IN (2, 4, 1, 23, 45, 11) AND
((((NOT (`Person`.`image` IS NULL)) AND (NOT (`Person`.`image` = NULL)))) OR
(((NOT (`Person`.`photos` IS NULL)) AND (NOT (`Person`.`photos` = '')))))
ORDER BY FIELD(`Person`.`id`, 2, 4, 1, 23, 45, 11) ASC LIMIT 3
ケーキ条件配列では、Person.image
is not null
orを指定しまし''
たが、対応するcakesql出力は。(NOT (Person.image IS NULL)) AND (NOT (Person.image = NULL))
のようになり(NOT (Person.image IS NULL)) AND (NOT (Person.image = ''))
ます。
ここでPerson.image
は、両方がNULL自体( ISNULLおよび=NULL)と比較されます。ここで、Person.image = NULLは、 Person.image=''のような空の文字列と比較します。
こちら'Person.image'
がタイプですが'INT'
、現段階からタイプを変更することは困難です。'Person.photos'
'VARCHAR'
どうすれば修正できますか?