Thinkphp5(tp5)Db的一些联查的用法 join 命名alias 时间戳转日期时间 (Mysql)
二话不说直接上代码
$createtime = [ 'FROM_UNIXTIME(gz.createtime,"%Y-%m-%d %H:%i:%s") as date']; // gz是alias起的别名 where随便加条件 join 先和关联的表起别名 然后和关联的表建立关系 Q496631085 $gzList = Db::name('shop_gz') ->alias('gz') ->where('gz.gzstatus','0') ->where('gz.workerid',1]) ->join('shop_user us', 'gz.uid=us.id','LEFT')//关联用户表 //LEFT是如果没有数据也要返回查询到的shop_gz这个表的数据 ->field('us.nickname,us.headimage,us.user_name,us.mobile,gz.*') //显示哪些字段 可以用*表示所有的字段 ->field($createtime) //把时间戳转成日期 时间 ->select();
来一个多功能接口的demo
1 // 翻页 标签 店铺id 员工id 点赞 模糊搜索作品名 2 public function get_worksList($page=1,$tag=null,$storesid=null,$workerid=null,$dianzan=null,$name=null) 3 { 4 5 if($tag){ $tag = "w.tag LIKE '%{$tag}%'";} 6 if($storesid){ $storesid = ['w.storesid'=>$storesid];} 7 if($workerid){ $workerid = ['w.workerid'=>$workerid];}//2020-8-24 12:37:10 新增具体手艺人id 8 if($name) { $name = "w.name LIKE '%{$name}%'";} 9 if($dianzan){ $dianzan = ['dz.uid'=>$this->uid];} 10 $hot_works = Db::name('shop_works') 11 12 ->alias('w') 13 ->where($storesid) 14 ->where($workerid)//2020-8-24 12:37:10 新增具体手艺人id 15 ->where($tag) 16 ->where($name) 17 18 ->where('w.state_switch',1) 19 ->join('shop_worker wc', 'w.workerid=wc.id') 20 ->join('shop_stores sto', 'w.storesid=sto.id','LEFT')//关联职业表 21 ->join('shop_stores_profession ps', 'wc.professionid=ps.id','LEFT')//关联职业表 22 ->join('shop_dz dz', 'w.id=dz.worksid and dz.uid='.$this->uid,'LEFT')//关联关注表 23 ->where($dianzan) 24 ->field('dz.id as dz,w.*') 25 ->field('wc.name as workername,wc.workerimage,w.*') 26 ->field('ps.name as professionname') 27 ->field('sto.name as storesname,sto.id as storesid,sto.logoimage')//店铺字段 名称 id 店铺头像 28 ->order('w.views desc') 29 ->page($page,12) 30 ->select(); 31 32 33 //服务列表 34 foreach($hot_works as $key=>$works){ 35 $service = Db::name('shop_stores_service')->where('id','in',$works['serviceids'])->field('id,servicename')->select(); 36 $hot_works[$key]['servicelist'] = $service; 37 38 $hot_works[$key]['createtime'] = date('Y-m-d H:i:s',$works['createtime']); 39 } 40 41 42 return $hot_works; 43 }
//为什么要foreach 因为这个字段必须是个列表 也就是查询的这个是一个数组下面还有数组 也就是二维数组!