学新通技术网

Laravel框架使用 inRandomOrder() 方式高效的随机取出N条数据

Luke 31 1
Laravel框架使用 inRandomOrder() 方式高效的随机取出N条数据

前言

PHP的laravel框架使用mysq高性能的l随机查询取出指定的n条数据,在项目中,我们经常会需要从数据库随机的取出数据。

问题

在Laravel框架中如何高效的随机取出指定数量的数据

答案

1、使用原生的SQL从数据库取出多条条数据

Mysql官网可以看到,可以让ORDER BY RAND()LIMIT一起使用,可以从多行结果随机获取的一部分数据。

SELECT * FROM table WHERE name="" ORDER BY RAND() LIMIT 100;

在laravel中使用原生SQL也很简单

$info = DB::select('SELECT * FROM table WHERE name="" ORDER BY RAND() LIMIT 100');

2、使用原始表达式从数据随机获取数据

我们都知道laravel的原始表达式,我们可以使用DB::raw('RAND()')从数据库随机获取数据。同时你还可以使用orderByRaw('RAND()')从数据库随机获取数据,和DB::raw('RAND()')是一样的

$info=self::where('dealing','<>','')->orderBy(DB::raw('RAND()'))->take(5)->get();

3、使用laravel的inRandomOrder方法随机获取数据

laravel中使inRandomOrder会对数据结果进行随机排序,达到我们随机从数据库获取数据的效果:

$info = DB::table('users')->inRandomOrder()->take(5)->get();

本文出至:学新通技术网

标签: