2016-07-29 75 views
-2

我想爲下面的ID不存在的所有行選擇數據。我認爲這會起作用,但沒有錯誤,下面的id仍然出現在檢索到的記錄中。我使用CakePHP 2.5本獲取數據使用不IDS在cakephp中不起作用

$ids/// 

array(
(int) 0 => '14721', 
(int) 1 => '14731', 
(int) 2 => '14905', 
(int) 3 => '15808', 
(int) 4 => '15818', 



$test=$this->Lessonbak->find('all', array(
     'fields'=>array('id'), 
    'recursive' => -1)); 

$ids=array(); 
foreach( $test as $item): 
    array_push($ids,$item['Lessonbak']['id']); 

endforeach; 

    $lessonstudent2=$this->LessonsStudent2->find('all', array(
     'conditions' => array( "NOT" => array('LessonsStudent2.lesson_id' => $ids)), 
     'recursive' => -1)); 

回答

1

而是選擇所有Lessonbak ID的,他們推到一個數組,並使用在你的LessonsStudent2查詢,你只需要使用一個子查詢:

$dbo = $this->getDataSource(); 
$subquery = $dbo->buildStatement(
    array(
     'table' => 'lessonbak', 
     'alias' => 'Lessonbak', 
     'recursive' => -1, 
     'fields' => array(
      'Lessonbak.id' 
     ) 
    ), 
    $this 
) 


$this->LessonsStudent2->find('all', array(
    'conditions' => array(
     'NOT' => array(
      'LessonsStudent2.lesson_id IN (' . $subquery . ')' 
     ) 
    ) 
)