我有两个模型和一个数据透视表:
Teacher Class
数据透视表是class_teacher。我正在运行一个动态查询,其中我可以接收一组班级ID,并希望看到分配给他们的是哪些教师。
一个班级可以有多个老师,一个老师可以在多个班级。
用查询构建器查询的最好方法是什么?
到目前为止,我已经使用whereHas修饰符运行代码来拉入关系,然后使用whereIn来查看值是否存在。下面是一些代码,例如:
return $builder->whereHas('classes', function ($query) use ($value) {
$query->whereIn('class_teacher.class_id', $value);
});这不会触发错误,但当某些结果应该出现时,它不会返回任何结果。
我做错了什么?
谢谢
发布于 2019-06-07 22:12:09
您可以在模型上定义您的关系,然后就不需要在这个简单的情况下使用查询构建器了。
例如,在您的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中的保留字,所以我不确定您是否可以那样使用它。
https://stackoverflow.com/questions/56495724
复制相似问题