主页 > 知识库 > Laravel框架执行原生SQL语句及使用paginate分页的方法

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

热门标签:萍乡商铺地图标注 合肥企业外呼系统线路 电信外呼系统多少钱一个月 代理打电话机器人 太原400电话申请流程 宿州正规外呼系统软件 神龙斗士电话机器人 桂阳公司如何做地图标注 企业400电话办理多少费用

本文实例讲述了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框架执行原生SQL语句及使用paginate分页的方法》,本文关键词  Laravel,框架,执行,原生,SQL,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Laravel框架执行原生SQL语句及使用paginate分页的方法》相关的同类信息!
  • 本页收集关于Laravel框架执行原生SQL语句及使用paginate分页的方法的相关信息资讯供网民参考!
  • 推荐文章