• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Laravel框架执行原生SQL语句及使用paginate分页的方法

    本文实例讲述了Laravel框架执行原生SQL语句及使用paginate分页的方法。分享给大家供大家参考,具体如下:

    1、运行原生sql

    public function getList($data){
    //获取前端传过来的参数
      $user = $data['userId'];
      $office = $data['officeId'];
      $key = $data['oneKeySearch'];
    //进行模糊搜索和联合查询
      $where = 'and 1=1 ';
      if($key!=null) {
        $where.= ' and ( a.code like "%' . $key . '%"';
        $where.= ' or b.name like "%' . $key . '%"';
        $where.= ' or c.name like "%' . $key . '%")';
      }
    //对前端传回的字段进行判断,如果不为空则执行条件查询
      if($user!=null){
        $user='and a.userId='.$user;
      }
      if($office!=null){
        $office='and a.officeId='.$office;
      }
    //自定义原生sql语句,%s可以传参数到sql语句中,格式如下:
      $sqlTmp=sprintf('select a.id,a.code,a.attendanceRate,a.statisticTime,
                b.`realName` as userName,c.`name` as officeName
                from xxxa1
                LEFT JOIN xxx2 b ON a.userId=b.id
                LEFT JOIN xxx3 c ON a.officeId=c.id
        where a.deleted_at is null and 1=1 %s %s %s ORDER BY a.code
        ', $where,$office,$user);
    //执行SQL语句
      $results = DB::select($sqlTmp);
    //返回结果
      return $results;
    }
    
    

    2、运行查询构建器

    public function getList($data){
    //获取前端传过来的参数
      $user = $data['userId'];
      $office = $data['officeId'];
      $key = $data['oneKeySearch'];
    /*
     * 1、表格使用别名:直接是 “表名 as table1" ,(下面是xxx1 as a)
     * 2、左连接:DB::table('表1')
     *        ->leftJoin('表2', '表1.id', '=', '表2.外键关联')
     * 3、因为使用了软删除,所以在查询的时候要加上 ->whereNull('a.deleted_at')
     * 4、使用 DB::raw方法创建一个原生表达式,写进要查询的字段名称
     *    ->select(DB::raw('a.id,a.code,b.`realName` as userName,c.`name` as officeName'))
     *5、使用orderBy进行排序
     *
     */
         $data=DB::table('biz_attendance_sta as a')
           ->leftJoin('sys_user as b', 'b.id', '=', 'a.userId')
           ->leftJoin('sys_office as c', 'c.id', '=', 'a.officeId')
          ->select(DB::raw('a.id,a.code,a.attendanceRate,a.statisticTime,
                  b.`realName` as userName,c.`name` as officeName'))
           ->whereNull('a.deleted_at')
           ->orderBy('a.code', 'desc');
     //使用 if(!empty(xxx)){},来判断前端传过来的参数是否为空,不为空则执行条件查询
         if(!empty($user)){
           $data = $data->where( 'a.userId',$user);
         }
        if(!empty($office)){
          $data = $data->where( 'a.officeId',$office);
        }
     //使用 if(!empty(xxx)){},来判断前端传过来的参数是否为空,不为空则执行模糊搜索和联合查询
        if (!empty($key)) {
          $data = $data->where(function ($query) use ($key) {
            $query->where('a.code', 'like', "%{$key}%")
              ->orWhere('b.name', 'like', "%{$key}%")
              ->orWhere('c.name', 'like', "%{$key}%");
          });
        }
    //使用->paginate(10)进行分页
        $results=$data ->paginate(10);
        return $results;
    }
    
    

    更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • 使用Golang简单实现七牛图片处理API
    • Flask框架Flask-Login用法分析
    • Go Web框架gin的入门教程
    • Python的Flask框架及Nginx实现静态文件访问限制功能
    • PHP框架Laravel插件Pagination实现自定义分页
    • 使用Nginx+uWsgi实现Python的Django框架站点动静分离
    • golang API开发过程的中的自动重启方式(基于gin框架)
    上一篇:Laravel框架实现修改登录和注册接口数据返回格式的方法
    下一篇:Ubuntu中支持PHP5与PHP7双版本的简单实现
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Laravel框架执行原生SQL语句及使用paginate分页的方法 Laravel,框架,执行,原生,SQL,