Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 26.12.2018 01:04:30

Как выбрать самые залайканные посты по частоте упоминания их id

Здравствуйте. Это сложный запрос, но может кто-то сможет помочь. Уже сломал голову.
Смысл такой: На сайте у каждого пользователя есть возможность лайкнуть пост. Т.е. если он нажмёт на кнопку, то в таблице Like появится новая запись с id лайкнутого поста.
Подскажите пожалуйста, как выбрать 3 записи (по столбцу alias таблицы Post) самых популярных (у которых в колонке post_id Like больше всего повторяющихся значений).
Post
id  alias
1   Первая статья
2   Десятая статья
3   Двадцатая статья
4   Тридцатая статья

Like
id  post_id
1   2
2   2
3   4
4   1

В примере выше, больше всего лайкали посты с id 2, 1, 4. В результате я должен получить в выборке 3 эти статьи по порядку убывания их частоты упоминания в столбце post_id:
1. Десятая статья    -2 like
2. Первая статья    -1 like
3. Тридцатая статья    -1 like

Не в сети

#2 26.12.2018 05:52:45

Re: Как выбрать самые залайканные посты по частоте упоминания их id

Аналогичный случай, только имена другие
https://stackoverflow.com/a/40021201

А вообще, оптимально иметь поле с количеством лайков в самом посте. При лайке добавляешь запись и увеличиваешь счётчик в одной транзакции.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#3 26.12.2018 06:57:07

Re: Как выбрать самые залайканные посты по частоте упоминания их id

Спасибо вам огромное. Это должно сработать

Не в сети

Подвал раздела