我的应用程序有用户和组。它们与数据透视表相关。数据透视表具有可为空的“连接”和“左”日期时间。
如何在数据透视表上使用逻辑分组?
我已经尝试过:
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
未定义。
我错过了一些明显的东西吗?
如果您处于组模型中,您可以定义:
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();