2016-07-29 2 views
-2

Я хочу выбрать данные для всех строк, где не существует идентификаторов ниже. Я думал, что это сработает, но ошибки нет, и в возвращаемых записях все еще появляются идентификаторы. Я использую CakePHP 2.5 для этогополучить данные, используя не идентификаторы, не работающие в 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, толкая их в массив, и использовать это в вашем 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 . ')' 
     ) 
    ) 
) 
Смежные вопросы