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  因为这个字段必须是个列表 也就是查询的这个是一个数组下面还有数组 也就是二维数组!

posted @ 2020-08-25 10:36  xiaohe520  阅读(1627)  评论(0编辑  收藏  举报