У меня есть таблица постов. Есть таблица рейтинга постов такого вида:
|
id, post_id, user_id, like|
При нулевом значении like - получается дизлайк, при положительном - лайк. Функционал убирания лайка/дизлайка - удаление записи в таблице.
Теперь мне нужно посчитать кол-во лайков и кол-во дизлайков, а также определить оценил ли пользователь запись.
Как это лучше будет сделать? К примеру со связями в лоб сделал в модели поста так:
public function likes()
{
return $this->hasMany('App\Rating')->where('like', '1')->count();
}
public function dislikes()
{
return $this->hasMany('App\Rating')->where('like', '0')->count();
}
Душа чует быдлокод и потенциальную нагрузку при пересчете значений на каждый пост.
Думал насчет того, чтобы помимо таблицы с рейтингом добавить к таблице постов пару значений like/dislike. И менять их при каждом лайке/дизлайке. Это устранит потребность в постоянном пересчете, но выглядит как костыль.