我有一个名为 instructor_class 的表: user_id,class_id ,我有另一个表类: id,time,active < / em>的
我想为单个用户显示类,但只有那些活动的类是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();
这再次给我返回相同的记录,但当然每个记录的class属性为null,这在某些时候看起来是正确的,但我的观点是,如果&#39;活跃&#39;字段不对应在类表中不显示记录,似乎where()stm in with()是可选的..
我有点被困在这里...... 非常感谢您的帮助,意见!
答案 0 :(得分:0)
您可以使用::has('classes')
仅返回具有相关类的模型
return InstructorClass::has('classes')->with(['classes' => function ($q) use ($active) {
$q->where('active', $active);
}])
->where('user_id', '=', $userId)
->get();
答案 1 :(得分:0)
从未想过会这么简单:
return InstructorClass::with('classes.session')
->join('classes', 'classes.id', '=', 'instructor_class.class_id')
->where('classes.active', '=', 1)
->where('user_id', '=', $userId)
->get();