【发布时间】:2020-07-28 05:16:57
【问题描述】:
我对 Laravel 7 Eloquent 有疑问。我有 2 个由 many to many relation 加入的表。表用户通过pivot 表 PaymentModuleUser 连接到 PaymentModule。我需要在语句is_active = 1 的数据透视表上使用where。当我在我的模型中使用 toSQL() 时,SQL 返回了很好的结果,但是当我在 Controller 中检查我的 Eloquent Query 时,我恢复的数据忽略了我的 wherePivot 方法(从表中返回所有数据,忽略 is_active = 1 字段订阅者 = null 并让我这个用户.. 如果我的pivotWhere = null 不显示此用户,我必须这样做)。你能指出我的代码哪里出错了吗?
我的 UserTable 模型:
public function subscriber(){
return $this->belongsToMany(PaymentsModule::class, 'payment_module_user', 'user_id')->withPivot('is_active');
}
我的控制器:
$users = User::with(['subscriber'=>function($query)
{
$query->wherePivot('is_active','=', 1);
}])->get();
print_r($users);
【问题讨论】:
-
你的意思是返回所有用户吗?或返回所有订阅
is_activite=0 -
我的意思是返回订阅过期的用户。
标签: sql laravel eloquent pivot relationship