2017-01-21 7 views
0

以下の件名テーブルのフィールドは表示できません。私は正しい生徒データを取得しますが、エラーは表示されませんが、被験者テーブルのフィールドは表示されません。私が間違っていることを確認していない。 where句を削除すると、件名のすべてのデータが取得されるため、問題はcontains句になります。所属テーブルからフィールドを取得できない

 $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' 

} 
.... 
+0

すべてがよさそうだいくつかの奇妙な理由で、あなたが与えられた条件の被験者の記録を持っていることを確認しているためstudents_subjectsテーブルsubjects_studentsを呼び出すために必要な?最初に確認してください。 –

+0

はい私はたくさんの件名を60以上持っているので、ここで何をすべきか分かりません – jagguy

+0

出力の件名が空の配列であることを確認しますか? – jagguy

答えて

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

は私がマッチングを使用しても

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

       return $q 
        ->select(['Subjects.id','Subjects.name']) 
        ->where(['Subjects.id >' =>$subId]); 
       }); 
関連する問題