2014-09-03 1 views
0

Я использую фреймворк cakephp. У меня две таблицы на моей базе данных DB, курсов и модулей. Эти таблицы связаны, курсы имеют много модулей. В основном я хочу получать данные о курсах и модулях, но с конкретными полями. Я хочу получить только идентификатор и название курса, а также идентификатор и название модуля.Cakephp: Как получить данные с конкретными полями на связанной модели

Этот код:

$courses_taken = $this->Course->find('all', array(
    'conditions' => array('Course.id' => $course_id_list), 
    'fields' => array('Course.id', 'Course.title') 
)); 

дает мне:

array(
    (int) 0 => array(
     'Course' => array(
      'id' => '1', 
      'title' => 'course 1' 
     ), 
     'Module' => array(
      (int) 0 => array(
       'id' => '1', 
       'course_id' => '1', 
       'title' => 'module 1', 
       'image' => null, 
       'content' => 'Lorem ipsum', 
       'voice_over' => null, 
       'created' => '2014-09-03 14:02:25', 
       'modified' => '2014-09-03 14:02:28' 
      ), 
      (int) 1 => array(
       'id' => '2', 
       'course_id' => '1', 
       'title' => 'module 2', 
       'image' => null, 
       'content' => 'Sasdas', 
       'voice_over' => null, 
       'created' => null, 
       'modified' => null 
      ) 
     ) 
    ), 
    (int) 1 => array(
     'Course' => array(
      'id' => '2', 
      'title' => 'course 2' 
     ), 
     'Module' => array() 
    ) 
) 

Но я хочу выбрать конкретное поле для модуля, а поэтому я попробовал этот код:

$courses_taken = $this->Course->find('all', array(
    'conditions' => array('Course.id' => $course_id_list), 
    'fields' => array('Course.id', 'Course.title', 'Module.id', 'Module.title') 
)); 

но дает me error: Column not found: 1054 Неизвестный столбец Module.id в списке полей. Пожалуйста, помогите мне, ребята, спасибо.

+0

Я понимаю, что вы хотите получить данные модулей с данными их курса ... я прав? –

+0

Курс имеет много модулей. Поэтому я хочу получить данные курса с данными своих модулей. –

ответ

0

Либо вы используете какой-то поведение, как Containable и вашей находке() будет выглядеть следующим образом:

$courses_taken = $this->Course->find('all', array(
    'conditions' => array('Course.id' => $course_id_list), 
    'fields' => array('Course.id', 'Course.title'), 
    'contain' => array(
     'Module' => array(
      'fields' => array('Module.id', 'Module.title'), 
     ), 
    ), 
)); 
+0

Привет, Спасибо, что ответил, но у меня все тот же результат. –

+0

@JerickAllanSernalDimaano добавили ли вы сдерживаемое поведение в свою модель курса? –

0

попробовать это -

$courses_taken = $this->Course->find('all', array(
    'conditions' => array('Course.id' => $course_id_list), 
    'fields' => array('Course.id', 'Course.title'), 
    'contain' => array('Module.id', 'Module.title') 
)); 
+0

Привет, Спасибо, что ответили, но у меня все тот же результат. –

+0

Вы используете сдерживаемое поведение? –