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');
    }

 

你可能感兴趣的:(PHP)