Получить случайные записи в 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() в сочетании с дополнительными условиями выборки. В общем ограничений как таковых нет.