使用不在cakephp中工作的非ID获取数据

使用不在cakephp中工作的非ID获取数据,cakephp,Cakephp,我想为以下ID不存在的所有行选择数据。我原以为这会起作用,但没有错误,下面的ID仍然出现在检索到的记录中。我正在为此使用CakePHP2.5 $ids/// array( (int) 0 => '14721', (int) 1 => '14731', (int) 2 => '14905', (int) 3 => '15808', (int) 4 => '15818', $test=$this->Lessonbak->find('all',

我想为以下ID不存在的所有行选择数据。我原以为这会起作用,但没有错误,下面的ID仍然出现在检索到的记录中。我正在为此使用CakePHP2.5

  $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 ) ); 

不要选择所有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 . ')'
        )
    )
)