如何解决 Laravel 中完整性约束违规:1052 Column 'id' in where 子句不明确

Tan*_*med 2 php laravel

我在学生和部门之间有一个belongsToMany关系。现在我想获取所有部门的 subject_id 为 null 的学生部门。我在下面的代码,但它给了我以下错误

SQLSTATE[23000]: 完整性约束冲突: 1052 where 子句中的列 'id' 不明确 (SQL: select * from departmentswheresubject_id为 null 且存在 (select * from studentsinner join department_studenton students. id= department_student. student_idwhere departments. id= department_student. department_idand id= 16 and students. deleted_atis无效的))

$departments=Department::where('subject_id','=',null)
                        ->whereHas('students',function($student){
                            $student->where('id',Auth::id());
                        })
                        ->get();
dd($departments);
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激

asc*_*ftw 6

您应该指定引用的表名称id以避免歧义。

$departments=Department::where('subject_id','=',null)
->whereHas('students',function($student){ 
      $student->where('student.id',Auth::id()); //Notice the student.id instead of id
  })->get();
Run Code Online (Sandbox Code Playgroud)