Cakephp属于null id

时间:2012-08-24 18:10:13

标签: cakephp cakephp-2.0

我需要找到userId为1null的所有行,但是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行,因为

  

SysPermissionuser_id = SysUserid

我在我的控制器内跟随:

$sysPermissions = ClassRegistry::init('SysPermission')->find('all', array(
        'conditions' => array(
            'SysPermission.user_id' => array('1', null)
        ),
        'fields' => array('SysMenu.*')
    )
);

如何获取所有行,关联允许ID或NULL

2 个答案:

答案 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.*')
    )
);