tp5展示数据去除查到重复的数据

去掉查询数据库重复数据
在开发过程中遇到一个,不知道什么原因连表查询的数据出现重复,使用了php自带函数array_unique()这个,无法实现我的需求,使用到返回的数据为null。
因此我需要找到一个办法去除查询到重复的数据,我想到两种方法。
第一种:
foreach循环将那查询到的数据for循环,当出现重复的id时候,我将这个数据只保留一次到一个空数组中,然后在html页面进行展示,这样感觉有些麻烦。
第二种:
我在网上找到tp3一个过滤重复数据的一个数据库自带函数distinct ( true );
i n d e x = 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

猜你喜欢

转载自blog.csdn.net/qq_29202427/article/details/82629116
今日推荐