我需要找到userId为1
或null
的所有行,但是cake会生成以下内容:
SELECT `SysMenu`.*
FROM `sigepar_softpc`.`sys_permissions` AS `SysPermission`
LEFT JOIN `sigepar_softpc`.`sys_users` AS `SysUser`
ON (`SysPermission`.`user_id` = `SysUser`.`id`)
WHERE `SysPermission`.`user_id`
IN (1, NULL)
我认为问题是第4行,因为
SysPermission
。user_id
=SysUser
。id
我在我的控制器内跟随:
$sysPermissions = ClassRegistry::init('SysPermission')->find('all', array(
'conditions' => array(
'SysPermission.user_id' => array('1', null)
),
'fields' => array('SysMenu.*')
)
);
如何获取所有行,关联允许ID或NULL
?
答案 0 :(得分:1)
尝试:
$sysPermissions = ClassRegistry::init('SysPermission')->find('all', array(
'conditions' => array(
'OR' => array('SysPermission.user_id' => 1, 'SysPermission.user_id' => null)
),
'fields' => array('SysMenu.*')
)
);
答案 1 :(得分:1)
我认为不可能在IN运算符中放置null。它的期望值和null不是一个值。所以你真的必须使用null和OR来获得所需的结果。
你必须尝试这个代码,如Davor Lozic所说:
$sysPermissions = ClassRegistry::init('SysPermission')->find('all', array(
'conditions' => array(
'OR' => array('SysPermission.user_id' => array('your values'), 'SysPermission.user_id' => null)
),
'fields' => array('SysMenu.*')
)
);