我对 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/