根据 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();