Cake PHP 复杂的 find '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' => '')),
)
)
);
对应的cake sql dump输出查询如下
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
在 cake 条件数组中,我给出Person.image
的不是null
or ''
,而是对应的 cake sql 输出(NOT (Person.image IS NULL)) AND (NOT (Person.image = NULL))
应该是这样的(NOT (Person.image IS NULL)) AND (NOT (Person.image = ''))
。
这里Person.image
两者都与 NULL 本身(IS NULL和= NULL)进行比较,其中Person.image = NULL想要与空字符串(如Person.image = '' )进行比较。
这里'Person.image'
是'INT'
和'Person.photos'
是'VARCHAR'
类型,但是从当前阶段很难改变类型。
如何纠正?