首页 > 解决方案 > 在 laravel 查询生成器中加入多个表会导致重复

问题描述

我正在尝试使用 Laravel Query Builder 加入 2 个表。

这是我加入 2 个表的查询


  $instructors = DB::table('instructors')
                ->join('instructor_courses', 'instructors.id', '=','instructor_courses.instructor_id')
                ->where('instructor_courses.course_id', $schedule->course_id)
                ->where('instructor_courses.position', 'Instructor')
                ->whereNull('instructor_courses.deleted_at')
                ->whereNull('instructors.deleted_at')
                ->get();

该代码让我可以正确加入表格,但这会导致多次重复。看一下select标签传入的结果

在此处输入图像描述

这是我的架构

教员表 在此处输入图像描述

讲师课程表 在此处输入图像描述

基本上我想要实现的是显示一条不重复的记录。有没有更好的方法来加入像这样的多个表?谢谢

标签: phplaravel

解决方案


你应该groupBy使用instructors.id

 $instructors = DB::table('instructors')
            ->join('instructor_courses', 'instructors.id', '=','instructor_courses.instructor_id')
            ->where('instructor_courses.course_id', $schedule->course_id)
            ->where('instructor_courses.position', 'Instructor')
            ->whereNull('instructor_courses.deleted_at')
            ->whereNull('instructors.deleted_at')
            ->groupBy('instructors.id') //add a line
            ->get();

推荐阅读