Thinkphp 获取数据表随机值

有时候我们需要去获取数据表中随机条数据用于展示,比如新闻推荐、人员推荐等

 1     /**
 2      * 获取随机列表
 3      * @param $num             获取的记录数
 4      * @param array $map       筛选条件
 5      * @param string $key      主键id
 6      * @return mixed
 7      */
 8     public function randomDataList($num, $map = [], $key = 'id'){
 9         # 获取到所有满足条件的 key
10         $ids = $this->where($map)->group($key)->getField($key, true);
11         if (count($ids) > $num){
12             $arr = [];
13             # 获取到随机数组
14             $keys = array_rand($ids,$num);
15             foreach ($keys as $v){
16                 $arr[] = $ids[$v];
17             }
18             # 再次构造查询条件
19             if(empty($arr)){
20                 return [];
21             }  else {
22                 $map= [$key => ['IN', $arr]];
23             }
24             $moreData =  $this->where($map)->limit($num)->select();
25         } else {
26             $moreData =  $this->where($map)->limit($num)->select();
27         }
28         return $moreData;
29     }
原文地址:https://www.cnblogs.com/hardykay/p/12572081.html