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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值