无法使用Laravel从两个不同的表中获取我想要的数据

时间:2016-07-03 18:21:59

标签: php database laravel orm eloquent

我有一个名为 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()是可选的..

我有点被困在这里...... 非常感谢您的帮助,意见!

2 个答案:

答案 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();