2016-07-03 50 views
0

两个不同的表得到我想要的数据我有一个名为instructor_class表:USER_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每个记录,这在某些时候看起来是正确的,但我的点是如果'积极'字段不对应在类表不显示记录,似乎与()中的where()stm是()是可选的..

我有点卡在这里... 会感谢您的帮助,意见!

回答

0

您可以使用::has('classes')只返回那些相关的类

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

不工作,让我不想同样的结果!即使没有active = 1的课程,我仍然可以获得记录 – mizlul

0

没想到的车型也可能是这样简单:

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