[英]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.