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

  • 相关阅读:
    提高PHP程序运行效率的方法
    必须知道的sql编写技巧。多条件查询不拼接字符串·的写法
    数据库SQL优化大总结之 百万级数据库优化方案
    编程一开始就应该养成的好习惯
    php图像处理
    jqurey 简单的,我也简单
    菜单上下级 (全国地区)
    think php v5.0
    正则表达式
    有感赠朵朵
  • 原文地址:https://www.cnblogs.com/xiaohe520/p/13558334.html
Copyright © 2011-2022 走看看