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

标签 php laravel pivot-table eloquent

我有一个包含 id、name、email 和列的用户模型

包含 id、name、code 和列的类(class)模型

一个数据透视表 course_user。

Course 和 User 是多对多的关系

course_user 表包含 course_id、user_id、section 列

在学习类(class)时,部分用户将在枢轴部分列中列为“待定”,部分用户将在部分列中列为“A”、“B”等。

问题:我想获得那些至少有一个用户参加的类(class),并且部分是“待定” 到目前为止,我已经尝试过这些: 在类(class)模型中:

public function users(){

    return $this->belongsToMany(User::class)
                ->withPivot('section');
                ->wherePivot('section', 'Pending');
}

我在类(class)模型中尝试过的另一种方法:

public function pendingUsers(){

    return $this->belongsToMany(User::class)
                ->withPivot('section')
                ->wherePivot('section', 'like', 'Pending');
}

但是所有这些都给了我所有的类(class)。 现在,如何完成这项工作?

最佳答案

定义关系:

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

然后:

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

关于php - 基于 laravel 中的附加数据透视表列进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48398139/

相关文章:

php - 使用 laradock 迁移 Laravel 数据库失败

excel - PivotTable.RefreshTable 和 PivotTable.Update 有什么区别?

php - 如何使 PHP 变量在所有页面中可用

PHP暴力密码生成器

javascript - Google Drive API 公共(public)下载私有(private)帐户文件

MySQL - 行到列

java - 如何在 ZK 中调整数据透视表中的列大小

php - 如何在php中显示数组值?

Laravel 有条件本地化

mysql创建触发器错误