Laravel 5.5 Как получить красноречивый счетчик отношений? - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть три таблицы, как определено ниже

Пользователь

  • id
  • имя

Сообщение

  • id
  • text
  • user_id

Комментарии

  • id
  • text
  • post_id

Это модель пользователя Пользователь. php

class User
{
     public function post()
    {
       return $this->hasMany(Post::class);
    }   
}

Это моя модель поста. php

    class Post
    {
       public function comments()
       {
          return $this->hasMany(Comment::class);
       }   
   }

Проблема:

Я хочу отображать количество комментариев для каждого пользователя, используя красноречивую загрузку.

Кто-нибудь может мне помочь с этим? Заранее спасибо.

1 Ответ

2 голосов
/ 17 февраля 2020

Вы можете определить новое отношение hasManyThrough ( документы ) для комментариев пользователя:

class User
{
    public function comments()
    {
        return $this->hasManyThrough(
            'App\Comment',
            'App\Post',
            'user_id', // Foreign key on posts table...
            'post_id', // Foreign key on comments table...
            'id', // Local key on users table...
            'id' // Local key on posts table...
        );
    }
}

Теперь вы можете считать комментарии каждого пользователя (Laravel документы ):

$users = App\User::withCount('comments')->get();

foreach ($users as $user) {
    echo $user->comments_count;
}
...