Thinkphp 获取数据表随机值

佐手、 提交于 2020-03-26 09:43:33

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

 

 

 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     }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!