0

我需要找到 userId 是1or的所有行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= SysUserid

我在我的控制器中执行以下操作:

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

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

4

2 回答 2

1

尝试:

$sysPermissions = ClassRegistry::init('SysPermission')->find('all', array(
        'conditions' => array(
            'OR' => array('SysPermission.user_id' => 1, 'SysPermission.user_id' => null)
        ),
        'fields' => array('SysMenu.*')
    )
);
于 2012-08-24T20:02:18.157 回答
1

我认为不可能将 null 放在 IN 运算符中。它需要值,而 null 不是值。所以你真的必须把 OR 和 null 放在一起才能得到想要的结果。

您必须尝试 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.*')
    )
);
于 2012-08-24T20:36:48.043 回答