не могу получить поля из таблицы owntomany

Я не могу получить какие-либо поля из таблицы тем ниже для отображения. Я получаю правильные данные о студентах, я не получаю ошибок, но я не получаю никаких полей из таблицы «Темы». Не уверен, что я делаю неправильно. Если я удаляю предложение where, я получаю все данные от субъектов, поэтому проблема заключается в предложении where в содержании.

      $students = $this->Students->find()
                  ->contain([ 'Subjects' => function ($q) {
                      return $q
                           ->select(['id','name'])
                            ->where(['Subjects.id >' =>60])  ;  
                            }])   
                  ->select(['Students.id','Students.last_name','Students.first_name'])
                  ->where(['Students.student_inactive'=>false])
                    ->hydrate(true);


             foreach($students as $key=>$item2):
                    debug($item2);
             endforeach;


    /////////output
object(App\Model\Entity\Student) {

    'id' => (int) 24,
    'last_name' => 'Test',
    'first_name' => 'Cavr',
    'subjects' => [],
    '[new]' => false,
    '[accessible]' => [
        '*' => true
    ],
    '[dirty]' => [],
    '[original]' => [],
    '[virtual]' => [],
    '[errors]' => [],
    '[invalid]' => [],
    '[repository]' => 'Students'

}
....

person jagguy    schedule 21.01.2017    source источник
comment
Все выглядит хорошо, вы уверены, что у вас есть запись по предметам в данном состоянии? подтвердите это в первую очередь.   -  person Manohar Khadka    schedule 21.01.2017
comment
да, у меня много идентификаторов субъектов старше 60, поэтому я понятия не имею, что здесь делать   -  person jagguy    schedule 21.01.2017
comment
см. темы в выводе пустой массив?   -  person jagguy    schedule 21.01.2017
comment
это не будет проблемой, но просто попробуйте выбрать, например, select(['Subjects.id','Subjects.name']); там.   -  person Manohar Khadka    schedule 21.01.2017
comment
добавить subject.id и т. д. не сработало. Я удалил предложение where в slect, и это проблема. Почему-то не работает   -  person jagguy    schedule 21.01.2017


Ответы (1)


 $sub = $this->Students->find()
            // ->contain(['Subjects'])
              ->select(['Students.id'])
               ->where(['Students.student_inactive'=>0 
                   ])
              ->order(['Students.first_name' => 'ASC'])
              ->hydrate(true);

Мне нужно было использовать сопоставление, а также вызвать таблицу student_subjects subject_students по какой-то странной причине.

          $sub->matching('Subjects', function ($q) use ($subId) {

                 return $q
                   ->select(['Subjects.id','Subjects.name'])
                  ->where(['Subjects.id >' =>$subId]);
                }); 
person jagguy    schedule 21.01.2017