Допустим, есть модель Post
. У него есть hasMany
отношение, называемое comments()
, определенное в его модели.
Я пытаюсь:
- Получить количество комментариев
- Это относится на указанный c набор сообщений, определяемый массивом идентификаторов
- Где комментарии публикуются в определенном диапазоне дат
Я думал, что будет работать следующее:
$ids = [1, 2, 3, 4];
$results = Post::whereIn('id', $ids)
->with(['comments'])
->whereHas('comments', function($q) {
$q->whereMonth('created_at', Carbon::now()->month);
})
->withCount('comments')
->get();
А затем выполните
$count = array_sum($results->pluck('comments_count')->toArray());
Результат запроса включает в себя comments_count
, так что это работает, и $count
также работает.
Но дата диапазон в подзапросе не применяется, он насчитывает всех комментариев. Чего мне не хватает?