如何查询满足计数条件的多对多表

时间:2019-05-14 02:12:36

标签: laravel eloquent

共有3种型号:

  • 组(其具有Broadcasts()函数的定义hasMany to Broadcast的功能)
  • 广播(通过Groups()函数定义hasMany进行分组)
  • GroupBroadcast(具有定义父对象的Broadcast()和Group()函数)

目标是找到在24小时内发送不超过5个广播的组。

类似的东西:

Group::whereDoesntHave("Broadcasts", function($q) {
    $q->where("Count sent broadcasts in 24", "<=", 5);
})->get();

怎么可能?

2 个答案:

答案 0 :(得分:1)

您可以使用Eloquent的whereHas方法来接收关系,回调,运算符和计数。

尝试一下:

$groups = Group::whereHas('broadcasts', function ($query) {
    $query->whereBetween('created_at', [now()->subDay(), today()]);
}, '<=', 5)->get();

答案 1 :(得分:1)

您可以在has()中添加条件。试试这个:

Group::whereHas('broadcasts', function ($query) {
  $query->whereBetween('created_at', [now()->subDays(1), today()]);
})->has('broadcasts','>', 5)->get();