根据 laravel 中的附加数据透视表 table 列进行查询
querying based on the additional pivot table column in laravel
我有一个用户模型,其中包含列 id、名称、电子邮件和
具有列 id、名称、代码和
的课程模型
一个支点table course_user.
课程和用户具有多对多关系
course_user table 包含列 course_id、user_id、部分
在学习课程时,部分用户会在枢轴部分列中列为'Pending',部分用户将在部分列中列为'A'、'B'等。
问题:我想获取那些至少有一个用户参加过的课程,部分是'Pending'
到目前为止,我已经尝试过这些:
在课程模型中:
public function users(){
return $this->belongsToMany(User::class)
->withPivot('section');
->wherePivot('section', 'Pending');
}
我在课程模型中尝试过的另一种方法:
public function pendingUsers(){
return $this->belongsToMany(User::class)
->withPivot('section')
->wherePivot('section', 'like', 'Pending');
}
但是所有这些都给了我所有的课程。
现在,如何完成这项工作?
定义关系:
public function users()
{
return $this->belongsToMany(User::class)->withPivot('section');
}
然后:
Course::whereHas('users', function($q) {
$q->where('course_user.section', 'Pending');
})
->get();
我有一个用户模型,其中包含列 id、名称、电子邮件和
具有列 id、名称、代码和
的课程模型一个支点table course_user.
课程和用户具有多对多关系
course_user table 包含列 course_id、user_id、部分
在学习课程时,部分用户会在枢轴部分列中列为'Pending',部分用户将在部分列中列为'A'、'B'等。
问题:我想获取那些至少有一个用户参加过的课程,部分是'Pending' 到目前为止,我已经尝试过这些: 在课程模型中:
public function users(){
return $this->belongsToMany(User::class)
->withPivot('section');
->wherePivot('section', 'Pending');
}
我在课程模型中尝试过的另一种方法:
public function pendingUsers(){
return $this->belongsToMany(User::class)
->withPivot('section')
->wherePivot('section', 'like', 'Pending');
}
但是所有这些都给了我所有的课程。 现在,如何完成这项工作?
定义关系:
public function users()
{
return $this->belongsToMany(User::class)->withPivot('section');
}
然后:
Course::whereHas('users', function($q) {
$q->where('course_user.section', 'Pending');
})
->get();