2012-08-24 20 views
0

我需要找到所有行其中userID是1null,但蛋糕生成如下:CakePHP的屬於具有空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) 

我認爲這個問題是4號線,因爲

SysPermissionuser_id = SysUserid

我做跟隨我的控制器內:

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

我怎樣才能得到所有行,與協會允許ID或NULL

+0

你有用戶使用空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不是一個值。所以你真的必須把OR與空來得到所需的結果。

你必須嘗試這個代碼達沃爾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.*') 
    ) 
);