连表查询后数据处理

来源:互联网 发布:sql查询去除重复行 编辑:程序博客网 时间:2024/05/21 12:00

项目中的问题

------

现在的需求是将用户的信息渲染到前端页面,用户在前台可以选择是否填写手机号码信息,在数据库中也是通过中间表的方式将数据串联起来,数据表大概如下:




可以看到中间表中有一些用户是没有填写手机号码的,如果直接 进行连表查询,那么渲染到前端的数据就会有缺少(只会显示5条数据),所以我就想了一个办法解决这个问题:



1.通过关联模型,我先获取到了这个5个用户的所有数据(包括手机号码);

2.注意点:我使用 user_id作为二维数组的第一维下标;

3.我的想法是:我将手机号和user_id捆绑在一起,在循环遍历user数据的时候,根据user_id我就可以判断对应user_id 的用户是否存在手机号数据,然后再使用一个三元判断,进行赋值!!;

4.具体的代码如下:


最后得到的结果就是,如果用户填写了手机号码,那么对应的数据中就会包含***手机号码***,如果没有填写手机号码,则会显示***未填写******

上面的代码写的有点拙劣,但是基本的效果还是达到了就行!***

具体的代码:

public function get_mobile(){         $data = $this->name('UserMobile')->select();         //将 user_id作为下标重组数组   根据该数组  三元判断是否存在 完善所有的用户数据         foreach($data as $k=>$v){             $mobile[$v['user_id']]['mobile'] = $v['mobile'];         }         $user = $this->name('User')->select();        foreach($user as $k=>$v){            $user_data[$k]['user_id'] = $v->user_id;            $user_data[$k]['u_name'] = $v->u_name;            $user_data[$k]['headimgurl'] = "<img src='$v->headimgurl' style='width: 80px'>";            $user_data[$k]['company'] = $v->company;            $user_data[$k]['job'] = $v->job;            $user_data[$k]['mobile'] = empty($mobile[$user_data[$k]['user_id']]['mobile']) ? '未填写' : $mobile[$user_data[$k]['user_id']]['mobile'];        }        return $user_data;    }

0 0
原创粉丝点击