Laravel Eloquent:如何在数据透视表上使用逻辑分组

问题描述 投票:0回答:1

我的应用程序有用户和组。它们与数据透视表相关。数据透视表具有可为空的“连接”和“左”日期时间。

如何在数据透视表上使用逻辑分组

我已经尝试过:

Group::belongsToMany(User::class)->wherePivot(function ($query) use ($time) {
    $query->where('joined', null)->orWhere('joined', '<=', $time);
})
// and "left"
;

Group::belongsToMany(User::class)->where(function ($query) use ($time) {
    $query->wherePivot('joined', null)->orWherePivot('joined', '<=', $time);
})
// and "left"
;

但是都不起作用。第一个抱怨将函数作为参数传递,而该参数应该是字符串,第二个抱怨

wherePivot
未定义。

我错过了一些明显的东西吗?

laravel eloquent pivot-table eloquent-relationship laravel-10
1个回答
0
投票

如果您处于组模型中,您可以定义:

public function joinedbefore()
{
   return $this->belongsToMany(User::class)->withPivot(['your pivot-columns'])->where(function ($query)  {
      $query->where('joined', null);//orWhere...
  });
}

然后就可以调用:

$group = Group::find(1);//or any other way
$group->joinedbefore()->get();
© www.soinside.com 2019 - 2024. All rights reserved.