thinkphp5.0的alias、join、field、where、实操使用详解

 

    public function ceshi()
    { 
        //给表取别名
        $alias=['admin_user'=>'au','admin_class'=>'ac'];

        //join数据必须包含2个中括号(SQL join 用于把来自两个或多个表的行结合起来。)第一个参数是表名,第二个参数是表达式
        $join= [['admin_class','au.admin_class_id=ac.id']];

        //如果多表结合需要这样写
        // $join= [
        //          ['admin_class','au.admin_class_id=ac.id'],
        //          ['admin_user_status aus','au.admin_user_status_id=aus.id']
        //         ];

        //需要展示的字段(列) ‘ac.class_name’取别名为‘classname’
        $field=['au.id','au.name','ac.class_name'=>'classname'];

        //条件数组 只有条件数组可以这样定义
        $where['au.admin_name']=['=','sushuailong'];
        $where['au.state']=['=','1'];


        $Admin_user = Admin_user::get(function($query) use($alias,$join,$field,$where){
            $query->alias($alias) 
                  ->join($join)
                  ->field($field)
                  ->where($where); 
        });

        echo $Admin_user;
   
    }

本篇文件用的是闭包查询,外面的变量直接用是会报错的,所以得用'USE'引入

实战代码

    public function index($key='')
    {
         //用模型获取分页数据,并转换成数组形式
      


             //给表取别名
             $alias=['client'=>'c','service_item'=>'si'];

             //join数据必须包含2个中括号(SQL join 用于把来自两个或多个表的行结合起来。)第一个参数是表名,第二个参数是表达式
              $join= [['service_item','c.id=si.client_id']]; 

            //需要展示的字段(列) 
            $field=['c.id','c.product_id','c.name','si.id'=>'si_id','si.name'=>'si_name','si.section'=>'si_section'];

            //条件数组 只有条件数组可以这样定义
            $where['c.id']=['>','0'];

             //关键词查询条件
            if($key!=''){
                //关键词放中间查询
                $map['c.name'] = ['like','%'.$key.'%'];  
                }
                else{
                $map['c.id'] = ['>',0];
                }
 
            //获取所有客户数据 
         $c_list=ClientModel::whereOr($map)->alias($alias)
                                                ->order(['si.id'=>'desc'])
                                                ->join($join)
                                                ->field($field) 
                                                ->paginate(10,false,['type'=>'Cppage']);
 
   
    
           
            //阻断程序执行
            //exit("$si_list");
    
            // 获取分页显示
            $page = $c_list->render();
            
            
    
            // 获取总数据数
            $c_num = $c_list->num_total();
     

        //获取产品所有数据
        $product_all = ProductModel::all(function($query){
            $query->order(['order'=>'asc','id'=>'asc']);
        });


    
            //模板赋值 
            $this->view->assign('c_list',$c_list);
            $this->view->assign('c_num',$c_num);
            $this->view->assign('product_all',$product_all);
            $this->assign('page', $page);


           //渲染
           return $this->view->fetch('serviceitem_list');
    }

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙-极纪元JJY.Cheng

客官,1分钱也是爱,给个赏钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值