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