Laravel:whereHas->WhereHas->Where 查询。需要添加wherePivot

标签 laravel laravel-4 eloquent

我正在从某个数据范围中选择所有ScheduledPrograms,其中包含属于某个用户参加者。我想添加一个过滤器以仅选择数据透视字段 registered=1

所在的 SchduledPrograms

即我需要为多对多关系 scheduledPrograms->attendees 添加 wherePivot('registered', 1) 。我该怎么做?我的思绪被所有的 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而是实例。

因此您不能在 whereHas() 中使用 wherePivot()

关于Laravel:whereHas->WhereHas->Where 查询。需要添加wherePivot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33615462/

相关文章:

mysql - 如何在 Eloquent laravel中编写带有group by的连接查询?

mysql - Laravel 检查字符串是否包含数据库中的单词

ios - laravel - 在登录移动应用程序时保存 session 凭据

linux - 即使没有 Supervisor 运行,排队的作业仍在处理

laravel - 如何在 Laravel 存储上启用 "reduced redundancy"

php - 如何在 Laravel 中自定义日期修改器?

postgresql - 如何使用 Eloquent 和 PostgreSQL 将 IP 地址保存为二进制文件?

php - 想修改 laravel 默认登录以检查用户是否已验证

php - Laravel sqlite 说数据库是 "encrypted or is not a database"

php - Laravel 4 数据表集成