繁体   English   中英

如何使用查询生成器查询数据透视表值?

[英]How can I query a pivot table value using Query Builder?

我有两个模型和一个数据透视表:

Teacher Class

数据透视表是class_teacher 我正在运行一个动态查询,我可以在其中收到一组类ID,我想看看哪些教师被分配给他们。

一个班级可以有很多老师,老师可以在很多班级。

使用查询生成器查询此问题的最佳方法是什么?

到目前为止,我已经使用whereHas修饰符运行代码来拉入关系,然后使用whereIn来查看值是否存在。 有些代码如下:

return $builder->whereHas('classes', function ($query) use ($value) {
            $query->whereIn('class_teacher.class_id', $value);
        });

这不会触发错误,但是当某些错误显示时它不会返回任何结果。

我究竟做错了什么?

谢谢

您可以在模型上定义关系,然后在这个简单的情况下不需要使用查询构建器。

例如,在您的Class模型中添加以下内容:

public function teachers()
{
    return $this->belongsToMany(Teacher::class);
}

然后你可以打电话:

// $values should be an array of class ids
$classes = Class::whereIn('id', $values)->with('teachers')->get();

对每个班级进行迭代将为您分配给该班级的教师收集。 另一件事是Class是PHP中的保留字,所以我不确定你可以像这样使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM