繁体   English   中英

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

[英]How to solve Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous in laravel

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

SQLSTATE [23000]:完整性约束违规:1052 where 子句中的列 ' id ' 不明确(SQL:从subject_id为空且存在的departments中选择 *(从students内部连接department_studentstudents中选择 *。id = department_student student_id where departmentsid = department_student department_idid = 16 和students deleted_at为空))

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

任何帮助将不胜感激

您应该指定引用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();

我们也可以这样使用

->whereHas('students',function($student){ 
      $student->where('student.id', '=', Auth::id()); //Like this
  })->get();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM