Laravel 8 получить количество коментов к посту

Сейчас разбираю CMS Botble написанную на laravel. Суть в чем, есть форк плагин bb comments с отдельными таблицами под данный CMS и мне нужно получить количество комментов относящихся к конкретному посту!

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

Вот сама таблица slq

    CREATE TABLE `bb_comments` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `comment` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
  `reference_id` int(10) unsigned NOT NULL,
  `reference_type` varchar(120) COLLATE utf8mb4_unicode_ci NOT NULL,
  `ip_address` varchar(39) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  `status` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'published',
  `like_count` int(11) NOT NULL DEFAULT '0',
  `reply_count` int(11) NOT NULL DEFAULT '0',
  `parent_id` int(10) unsigned NOT NULL DEFAULT '0',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

в Модели коментариев есть вот такая функция

/**
 * @return \Illuminate\Database\Eloquent\Relations\MorphTo
 */
public function reference()
{
    return $this->morphTo();
}

Вот пытаюсь написать функцию, но сразу вижу но не могу понять в чем ошибка

function get_comments_count(Post $post)
{
    $comments = Comment::all()->reference($post->id);

    if ($comments) {
        $commentsCount = $comments->count();
        return $commentsCount;
    }
    
    return '0';

}

Таблица постов - я думаю никому не интересна - там все просто;


Ответы (1 шт):

Автор решения: Volodymyr Afanasiev

Необходимо в моделе постов создать связь на коментарии

public function сomments(): HasMany
   {
       return $this->hasMany(Comment::class, 'post_id');
   }

и $commentCount = $post->сomments()->count();

→ Ссылка