我正在从具有属于某个 ScheduledPrograms
的 Attendees
的某个数据范围中选择所有 User
。我想添加一个过滤器以仅选择数据透视字段 SchduledPrograms
所在的 registered=1
IE。我需要为多对多关系 wherePivot('registered', 1)
添加一个 scheduledPrograms->attendees
。我该怎么做?我的头脑被所有的 where 子句打乱了。
$programs = ScheduledProgram::where('registration_start_date', '<=', $today)
->where('end_date', '>=', $today)
->whereHas('attendees', function($q) use($user)
{
$q->whereHas('user', function($q) use($user){
$q->where('id', $user->id);
});
})->get();
模型
Attendee->belongsTo('User')
->belongsToMany('ScheduledPrograms')
User->hasMany('Attendee')
ScheduledProgram->belongsToMany('Attendee')
`
计划程序模型
public function attendees()
{
return $this->belongsToMany('Attendee', 'prog_bookings')->withPivot('registered','paid');
}
最佳答案
wherePivot()
只能用于 belongsToMany
实例,但 whereHas()
闭包函数接收 Builder
实例。
所以你不能在 wherePivot()
中使用 whereHas()
。
关于Laravel:whereHas->WhereHas->Where 查询。需要添加wherePivot,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33615462/