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


Posted in PHP onAugust 17, 2018

本文实例讲述了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框架的PHP程序设计有所帮助。

PHP 相关文章推荐
如何限制访问者的ip(PHPBB的代码)
Oct 09 PHP
PHP 一个页面执行时间类代码
Mar 05 PHP
PHP中将网页导出为Word文档的代码
May 25 PHP
解析PHP中$_FILES的使用以及注意事项
Jul 05 PHP
PHP实现全角字符转为半角方法汇总
Jul 09 PHP
PHP下载生成的csv文件及问题总结
Aug 06 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
Jan 08 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
php 魔术常量详解及实例代码
Dec 04 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
Aug 17 #PHP
ThinkPHP5+Layui实现图片上传加预览功能
Aug 17 #PHP
PHP实现类似题库抽题效果
Aug 16 #PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 #PHP
Laravel框架实现定时发布任务的方法
Aug 16 #PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 #PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 #PHP
You might like
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
用javascript实现点击链接弹出"图片另存为"而不是直接打开
2007/08/15 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
[43:53]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.22
2019/09/05 DOTA
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
掌上明珠Java程序员面试总结
2016/02/23 面试题
大三预备党员入党思想汇报
2014/01/08 职场文书
精彩自我鉴定
2014/01/16 职场文书
技校毕业生自荐书
2014/05/23 职场文书
爱护草坪标语
2014/06/24 职场文书
庆祝儿童节标语
2014/10/09 职场文书
给病人的慰问信
2015/03/23 职场文书
质检员岗位职责范本
2015/04/07 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
2016年教师新年寄语
2015/08/18 职场文书