玖叶教程网

前端编程开发入门

tp5框架我们如何在展示时候去除重复的数据呢?跟随小王来看看吧

去掉查询数据库重复数据

在开发过程中遇到一个,不知道什么原因连表查询的数据出现重复,使用了php自带函数array_unique()这个,无法实现我的需求,使用到返回的数据为null。

因此我需要找到一个办法去除查询到重复的数据,我想到两种方法。

第一种:

foreach循环将那查询到的数据for循环,当出现重复的id时候,我将这个数据只保留一次到一个空数组中,然后在html页面进行展示,这样感觉有些麻烦。

第二种:

我在网上找到tp3一个过滤重复数据的一个数据库自带函数distinct ( true );

index=

index=select->distinct ( true )->where ( ‘parent_id=0’ )->field ( ‘index’ )->select ();//例子!

然后我在tp5也使用这个函数发现也可以过滤重复数据,代码如下:

$list = Db::name('Apply')
		->alias("a") 
		->distinct ( true ) 
		->field("a.*,b.company_name,d.anchor_name") 
		->join("merchants b",'a.merchants_id=b.gl_merchants_id')
		 ->join("home_class c",'a.status=c.id') 
		->join("anchor d",'a.zhu_phone=d.anchor_phone') 
		->where($map)
		 ->order("a.apply_id desc") 
		->paginate($num,false,['query' => Request::instance()->param()]);
	 $list->toArray();
	 foreach ($list as $k=>$v){ 
			if($v['screen_class_id']=='0'){
				 $screen_class = '未绑定'; 
			}else{ $screen_class = '绑定';
			}
		 if($v['goods_id_num']=='' || $v['goods_id_num']=='null'){
				 $v['goods_id_num'] = '0';
			 } 
		 // pre($);die; 
		 $live_status = Db::name('live')
							->where(['room_id'=>$v['room_id']])
							->value('live_status');
		 if($v['is_shenhe']=='4' && $live_status=='2'){ 
				$v['is_shenhe'] = '5';
		 } 
		$live_id = Db::name('live')
					->where(['room_id'=>$v['room_id']])
					->value('live_id'); 
		 $v['live_id'] = $live_id; 
		$data = array();
		 $data = $v;
		 $data['screen_class'] = $screen_class; 
		$list->offsetSet($k,$data); 
}

个人建议使用第二种,效率高,不仅仅在开发效率还是在运行效率上。

END

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言