Как запросить таблицу со многими отношениями, когда выполняется условие подсчета - PullRequest
0 голосов
/ 14 мая 2019

Есть 3 модели:

  • Группа (с функцией Broadcasts (), определяющей hasMany to Broadcast)
  • Broadcast (с функцией Groups (), определяющей hasMany to Group)
  • GroupBroadcast (с функциями Broadcast () и Group (), определяющими родителей)

Цель состоит в том, чтобы найти группы, в которые отправляется не более 5 передач в течение 24 часов.

Что-то вроде:

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

Как это возможно?

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Вы можете добавить условие в has().Попробуйте это:

Group::whereHas('broadcasts', function ($query) {
  $query->whereBetween('created_at', [now()->subDays(1), today()]);
})->has('broadcasts','>', 5)->get();
1 голос
/ 14 мая 2019

Вы можете использовать метод Eloquent whereHas, который получает отношение, обратный вызов, оператор и счет.

Попробуйте это:

$groups = Group::whereHas('broadcasts', function ($query) {
    $query->whereBetween('created_at', [now()->subDay(), today()]);
}, '<=', 5)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...