У меня есть модель Category и модель Description.
При отображении моих категорий в списке я также хочу включить общее количество связанных описаний для всех категорий, но без необходимости загружать все описания.
Использование withCount работает с каждым отдельным объектом категории:
auth()->user()->categories()->withCount('descriptions')->get()
Таким образом, приведенное выше возвращает все категории и добавляет значение descriptions_count в объект, чего я не хочу.
Мне просто нужно одно общее количество описаний для всех категорий. Есть какой-нибудь простой способ добиться этого без необходимости загружать сами описания?






Я думаю, что вам нужен запрос с whereHas():
Description::whereHas('category', function ($query) {
$query->where('user_id', \Auth::id());
})->count();
Да, вы, вероятно, могли бы иметь отношение hasManyThrough к вашей модели пользователя для всех описаний через категории. Таким образом, вы получите тот же результат еще короче.
Спасибо, работает, всегда забываю о whereHas. И только сейчас я понял, что мог просто подсчитать количество всех активных описаний для пользователя, поскольку они в любом случае всегда связаны с категорией. Дох :)