Emchik
@Emchik
Что-то прикольное сделать могу

Как делать лайки на Laravel?

Есть статьи. Нужно добавить возможность ставить лайк или дизлайк.
Знаю о таком решении:
// Used by model App\Like

Schema::create('likes', function (Blueprint $table) {
    $table->increments('id');
    $table->unsignedInteger('likeable_id');
    $table->string('likeable_type');
    $table->unsignedInteger('user_id');
    $table->timestamps();
});


// Post & Comment model

public function likes()
{
    return $this->morphMany('App\Like', 'likeable');
}

// Then you can do something like 
<p>
  This post has {{ $posts->likes()->count() }} likes
</p>

Но верное ли это решение? Эта таблица может стать невероятно большой, и меня это настораживает. не знаю, как будет себя вести сайт.
  • Вопрос задан
  • 1109 просмотров
Решения вопроса 1
@jazzus
Как станет невероятно большой и тормознутной, тогда можно легко и просто отделить проблемную сущность. Т.е. решать проблему, когда она появится, а не заранее. Это если появится. А пока можно сделать как в примере, только убрать likes в трейт туда же методы с лайками (запись/удаление и т.д.) чтобы код не дублировать, вместо
$table->unsignedInteger('likeable_id');
$table->string('likeable_type');
написать
$table->morphs('likeable');
И коунт лайков можно в бд писать и инкрементить, чтобы запросов не делало
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
New_Horizons
@New_Horizons
Бред:
Невероятно большой это сколько?) несколько миллионов записей? Это ни о чём. Надо только индексы расставить правильно.

Только я дизлайков что-то не вижу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы