dimas199862
@dimas199862
frontend и backend

Как собрать запрос к бд на laravel?

Сегодня начал осваивать laravel, не могу собрать запрос, чтобы вывести необходимые данные.
Вот запрос:
$res = DB::table('lastmes')
			->groupBy('peer_id')
			->orderBy('id','desc')
			->limit('10')
			->get();

Он работает не совсем правильно. Как бы правильнее сказать..

Допустим, если в таблице будут такие строки:
id|peer_id
1|5
2|5
3|4
4|4
5|4
6|4

То запрос, который я описал выше вернет такие строки:
3|4
1|5

А мне нужны следующие строки:
6|4
2|5

Короче говоря, мне нужно вывести уникальные строки из таблицы, и при "уникализации", выбирать строку с большим значением id
Как собрать такой запрос?

UPD: для наглядности, расскажу что я пытаюсь сделать.
У меня есть чат бот в вк сообществе
Как известно, если зайти в "сообщения сообщества", в нем будут показываться только диалоги, а не беседы, я хочу написать простое приложение в котором будут показываться и беседы и диалоги бота, естественно, в базу данных записываются все сообщения которые поступают боту, у таблицы такая структура:
id - id записи
data - json объект с данными, которые пришли от callback api
peer_id - из диалога

Записи с peer_id, естественно, повторяются, поэтому я хочу вывести уникальные, как сообщения в вк
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
@holfza
Наверное как-то так
$res = DB::table('lastmes')
      ->select(DB::raw('MAX(id) as id, peer_id'))
      ->groupBy('peer_id')
      ->orderBy('id','desc')
      ->limit('10')
      ->get();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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