2012-08-24 1 views
0

과에 속하지만 케이크는 다음과 생성 : 나는 때문에, 문제는 4 선 생각CakePHP의 내가 userId를가 <code>1</code> 또는 <code>null</code> 모든 행을 찾을 필요가 널 (null) ID

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) 

SysPermission. user_id = SysUser. id

내 컨트롤러 내부의 추적을 : 나는 ID 또는 NULL 수 있도록 협회와 함께, 모든 행을 얻을 수있는 방법

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

? 와

+0

당신이 널 (null) ID로 사용자, 또는 사용자의 권한 중 일부에는 사용자가 없습니다합니까? –

+0

내 권한 중 일부 사용자가 없습니다. 사용자'null'의 권한은 게스트 권한입니다. –

+0

게스트 사용자는 로그인 동작을 수행하지 않거나 적어도 게스트가 아닌 구성원을 유발해야합니다. 따라서 Auth 구성 요소를 설정하고 권한이없는 모든 사용자가 특정 작업에 액세스 할 수있게하는 동안 이러한 모든 쿼리를 수행하는 이유를 이해할 수 없습니다. – xeranas

답변

1

시도 : 나는 그것의 가능한 생각하지 않는다

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

은 IN 연산자에 null을 넣어. 기대 값과 null은 값이 아닙니다. 따라서 원하는 결과를 얻으려면 실제로 OR을 null과 함께 사용해야합니다.

당신은 다보르 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.*') 
    ) 
); 
관련 문제