我有两个Course
和User
模型,它们之间存在ManyToMany关系。
并且有一个名为course_user
的数据透视表,其中包含这样的额外列:
course_id
user_id
status
score
status
列包含一个整数值,显示课程中用户的注册状态。
现在我想获取具有特定course_id
的特定用户的所有课程,并且其状态包含至少一个数组值。
为此我写了这个:
$user->courses()
->where('course_user.course_id', $course->course_id)
->wherePivot('status', 'not in', [1, 3, 10])
->count()
但这不起作用,也不能恢复我的期望。
即使我尝试从上面的代码中看到生成的sql显示 wherePivot 方法无法正常工作并忽略not in
sql运算符。返回sql:
"select * from `courses` inner join `course_user` on `courses`.`course_id` = `course_user`.`course_id` where `course_user`.`user_id` = ? and `course_user`.`course_id` = ? and `course_user`.`status` != ? and `courses`.`deleted_at` is null"
什么是问题,我该如何解决?
答案 0 :(得分:1)
在用户模型中建立关系
公共职能课程(){return $ this-> hasMany('Course','user_id');}
在CourseUser模型中建立关系
公共职能用户(){return $ this-> belongsTo('User','user_id');}
现在以这种方式调用此关系
{{$用户>课程() - > whereNotIn( '状态',[1,3,10]) - >得到()}}
希望它有效:)
答案 1 :(得分:1)
尝试使用$user->courses()
->where('course_user.course_id', $course->course_id)
->whereNotIn('status', [1, 3, 10])
->count()
方法
类似的东西:
registerJs()