@lolrofl01

Как получить количество статей для каждого юзера?

Задача: вывести список юзеров и рядом количество их публикаций.
У меня есть связь в модели с юзерами:
public function posts()
    {
        return $this->hasMany(Post::class);
    }

Но насколько я понял, она дает возможность получить посты только одного конкретного юзера. А как получить для всех сразу? С помощью связи такое возможно? Только не предлагать циклы. 105050 лишних запросов в бд...

Второй вариант, точно рабочий, это через join присобачить кол-во публикаций для каждого юзера. Но в таком случае не хочется вовсе использовать связи, т.к. либо уже ими пользоваться либо самому запросы составлять. Не люблю, когда здесь так, а там этак.
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
@jazzus
$users = User::with('posts')
    ->withCount('posts')
    ->get();

В шаблоне
@foreach ($users as $user)
    {{ $user->name }} {{ $user->posts_count }}
    @foreach ($user->posts as $post)
        {{ $post->title }}
    @endforeach
@endforeach
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы