2016-07-03 6 views
0

を使用して2つの異なるテーブルから、私が欲しいデータを取得カント instructor_class と呼ば:USER_ID、をCLASS_IDと私は別のテーブルクラス持っている:ID、時間、アクティブを。は、私はテーブルを持っているLaravel

私はアクティブが0または1

私の現在のコードは次のようになりますで、単一のユーザーだけが、これらのクラスのためのクラスを表示したいと思います:

return InstructorClass::with('classes.session')->where('user_id', '=', $userId)->get(); 

このコードは私のすべてを表示して、

$active = 1; 
return InstructorClass::with(['classes' => function ($q) use ($active) { 
      $q->where('active', '=', $active); // '=' is optional 
     }]) 
      ->where('user_id', '=', $userId) 
      ->get(); 

これは再び同じレコードを返しますが、もちろん、クラスプロパティは各レコードについてnullですが、ある時点では正しく見えますが、私の場合は、ポイントは、 'アクティブ'フィールドがクラステーブルで対応していない場合、レコードを表示しないようです。with()内のstmはオプションです..

私はちょっとここに詰まっています... あなたの助けに感謝、意見!

答えて

0

あなたはクラスのみ

return InstructorClass::has('classes')->with(['classes' => function ($q) use ($active) { 
    $q->where('active', $active); 
}]) 
->where('user_id', '=', $userId) 
->get(); 
+0

私はいけない、同じ結果を取得し、動作していません!私はまだアクティブなクラス= 1がなくてもレコードを取得する – mizlul

0

に関連しているモデルを返すに::has('classes')を使用することができますが、それはこの単純なことと考えていたことはありません:

return InstructorClass::with('classes.session') 
      ->join('classes', 'classes.id', '=', 'instructor_class.class_id') 
      ->where('classes.active', '=', 1) 
      ->where('user_id', '=', $userId) 
      ->get(); 
関連する問題