2012-02-01 2 views
2
$this->paginate['Member'] = array(
     'conditions' => array($conditions,'Member.division_id' => $currentTeam['Division']['id'],'Member.team_id'=> array(null,0)), 
     'group' => 'Member.id', 

    ); 

Этот запрос не получает команду NULL идентификатор .. Он получает только команды идентификатор 0.CakePHP нулевое значение при условии

ответ

8

Можете ли вы попробовать это?

$this->paginate['Member'] = array(
     'conditions' => array($conditions, 
       'Member.division_id' => $currentTeam['Division']['id'], 
       'OR'=> array(
        array('team_id'=>null), 
        array('team_id'=>0), 
       ), 
     'group' => 'Member.id', 

); 

Редактировать: Обернуто каждое условие team_id в его собственном массиве. Это предотвращает проблему дублирования ключа массива «team_id», но при этом используется согласованный формат условий.

+1

Как это может быть правильный ответ? массив OR имеет дублирующий ключ 'team_id', поэтому значение всегда равно 0, значение null будет потеряно – Ceeram

+0

Кто-то исправил его сейчас, похоже. – mark

10

Использование ключевого слова IS NULL обычно работает.

array( 
    $conditions, 
    'Member.division_id' => $currentTeam['Division']['id'], 
    'OR' => array(
     'Member.team_id' => 0, 
     'Member.team_id IS NULL' 
    ) 
) 
+0

Это отлично работает, THX! – FAjir

0
$this->paginate['Member'] = array(
     'conditions' => array($conditions, 
       'Member.division_id' => $currentTeam['Division']['id'], 
       'OR'=> array('Member.team_id'=> null, 'Member.team_id'=> 0), 
       'group' => 'Member.id', 

); 
1
array( 
    $conditions, 
    'Member.division_id' => $currentTeam['Division']['id'], 
    'OR' => array(
     'Member.team_id' => 0, 
     'IS' => array('Member.team_id' => NULL) 
    ) 
) 

Это то, что вы хотите.

Смежные вопросы