sql - Laravel Eloquent 在每个数据透视表字段条件下获取多对多关系

标签 sql laravel eloquent pivot relationship

我对 Laravel 7 Eloquent 有疑问。我有 2 个表由 many to many relation 连接。表用户通过 pivot 连接到 PaymentModule表 PaymentModuleUser。我需要使用where在数据透视表上的语句 is_active = 1 。当我使用toSQL()时在我的模型中,SQL返回良好的结果,但是当我在 Controller 中检查我的 Eloquent 查询时,我恢复的数据忽略我的wherePivot方法(从表中返回所有数据,忽略 is_active = 1 字段订阅者 = null 并让我得到这个用户..我必须这样做如果我的 pivotWhere = null 不显示该用户)。你能指出我的代码哪里出错了吗?

我的 UserTable 模型:

    public function subscriber(){
        return $this->belongsToMany(PaymentsModule::class, 'payment_module_user', 'user_id')->withPivot('is_active');
    }

我的 Controller :

$users = User::with(['subscriber'=>function($query)
{
$query->wherePivot('is_active','=', 1);
}])->get();

print_r($users);

最佳答案

尝试使用

$users = User::with('subscriber' => function($query) {
    $query->where('payment_module_user.is_active', 1);
})->get();

print_r($users);

The pivot table is already joined by eloquent, so just start using it

找到了here .

关于sql - Laravel Eloquent 在每个数据透视表字段条件下获取多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61225296/

相关文章:

java - 如何在SQL数据库日期列中插入空白值?

java - 我的程序中是否需要 Stmt.close()

laravel - CamelCase类型 Controller 的 View 文件夹的命名约定是什么

php - Laravel 通过外键分组

C# 不喜欢 SQL JOINS

sql - Oracle SQL 获取两个特殊字符之间的值

laravel - 如何将所有\Illuminate\Http\Request $request 数据设置为 FormRequest 对象以在 LARAVEL 中的 Controller 中使用

javascript - VueJS : How to Access the Previous Item in v-repeat

php - Laravel Eloquent 和复杂的关系

php - Laravel Eloquent::Find() 使用现有 ID 返回 NULL