Отправка сообщения






Как получить случайные записи из БД в Laravel?

Получить случайные записи в SQL на самом деле совсем не сложно, для этого существует специальный параметр сортировки – RAND(). Так как в Laravel мы обычно работаем не напрямую с базой, а через API, то и для такой задачи существуют специальные методы, которые помогут нам реализовать эти небольшие задачи.

Для чего выбирать случайные записи из базы каждый уже догадывается сам. Например, это могут быть случайные записи в блоге или какая-либо продукция, в случае если у вас интернет-магазин, да и в общем всё что угодно. Причин использования такой выборки данных может быть целое множество.

В данном примере мы будем использовать QueryBuilder, Eloquent и DB фасад. В Laravel есть метод inRandomOrder(), который собственно и выполняет эту опцию с сортировкой записей.

Пример 1 – Выборка случайных записей с помощью Laravel QueryBuilder
Для выборки случайных записей с QueryBuilder вы можете использовать метод DB::table в сочетании inRandomOrder(), в результате получится такая запись:

DB::table('products')->inRandomOrder()->limit(5)->get();

Пример 2 – Выборка случайных строк с помощью Laravel Eloquent
Аналогичным образом, если вы используете Eloquent, метод inRandomOrder так же может быть использован при построении запроса:

Products::inRandomOrder()->limit(5)->get();

Пример 3 – Построение запроса SQL
Ну и самое, наверное, очевидное это выборка случайных записей путём SQL запроса в базу используя фасад DB и функцию RAND() в запросе. Как говорится – имеет место быть.

DB::select('SELECT * FROM products ORDER BY RAND() LIMIT 5');

Результат предложенных трёх примеров выше будет выборка случайных 5 записей из таблицы products. Это означает, что все три примера приведут к аналогичному запросу к БД. Можно так же использовать метод inRandomOrder() в сочетании с дополнительными условиями выборки. В общем ограничений как таковых нет.

Опубликован: 15.11.2022 г.
 

Поддержать проект:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии

  • Загрузка...

Наверх