【问题标题】:How can I query a pivot table value using Query Builder?如何使用查询生成器查询数据透视表值?
【发布时间】:2019-06-07 13:56:51
【问题描述】:

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

Teacher Class

数据透视表是class_teacher。我正在运行一个动态查询,我可以在其中接收一组班级 ID,并且我想查看为他们分配了哪些教师。

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

使用查询生成器查询此内容的最佳方式是什么?

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

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

这不会触发错误,但在某些应该显示的时候它不会返回任何结果。

我做错了什么?

谢谢

【问题讨论】:

标签: php laravel eloquent


【解决方案1】:

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

例如,在您的 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 中是保留字,所以我不确定你是否可以这样使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2021-10-24
    • 2020-09-24
    • 2017-10-23
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    相关资源
    最近更新 更多