基于laravel中的附加数据透视表列进行查询

时间:2018-01-23 09:24:18

标签: php laravel pivot-table laravel-eloquent

我有一个包含id,name,email和

列的用户模型

包含列ID,名称,代码和

的课程模型

数据透视表course_user。

课程和用户具有多对多关系

course_user表包含列course_id,user_id,section

在参加课程时,有些用户会被列为“待定”课程。在pivotots section列中,一些用户将被列为' A',' B'在栏目栏中等。

问题:我希望获得至少一位用户所采用的课程,其中一部分是'待定' 到目前为止,我已尝试过这些: 在课程模型中:

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');
}

但所有这些都给了我所有的课程。 现在,这项工作怎么办?

1 个答案:

答案 0 :(得分:3)

定义关系:

public function users()
{
    return $this->belongsToMany(User::class)->withPivot('section');
}

然后:

Course::whereHas('users', function($q) {
    $q->where('course_user.section', 'Pending');
})
->get();