Подсчитайте количество ответов на комментарий в данном сообщении, используя laravel eloquent - PullRequest
1 голос
/ 21 апреля 2020

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

id  | parent_id | post_id
 1      0            1
 2      0            1
 3      1            1
 4      2            1
 5      1            1

Я пытаюсь добиться того, чтобы получить все комментарии (parent_id = 0) на основе post_id и подсчитать общее количество ответов одновременно. Когда запрос выполняется, он должен отображаться так, как показано ниже:

 id 1 has 2 replies
 id 2 has 1 reply

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

 Comment::where('parent_id', '=', 0)
          ->where('post_id', $postId)
          ->get();

Кто-нибудь знает, как это исправить?

Ответы [ 2 ]

4 голосов
/ 21 апреля 2020

Вы можете определить метод в классе модели Comment. Следующим образом:

public function replies()
{
    return $this->hasMany('App\Models\Comment','parent_id');
}

Затем вы можете получить количество ответов, используя следующий код:

$comments = Comment::where('parent_id', '=', 0)
      ->where('post_id', $postId)
      ->withCount('replies')
      ->get();

В этом случае вы можете получить доступ к количеству комментариев с помощью следующего кода:

foreach ($comments as $comment){
    $countOfReplies = $comment->replies_count;
}

Надеюсь, это поможет

0 голосов
/ 21 апреля 2020

Вы можете использовать count() метод вместо get()

Comment::where('parent_id', '=', 0)
      ->where('post_id', $postId)
      ->count();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...