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();