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 相关文章推荐
论坛头像随机变换代码
Oct 09 PHP
PHP4实际应用经验篇(5)
Oct 09 PHP
安装APACHE
Jan 15 PHP
PHP的分页功能
Mar 21 PHP
PHP IN_ARRAY 函数使用注意事项
Jul 24 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
解析php中static,const与define的使用区别
Jun 18 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
php用户注册时常用的检验函数实例总结
Dec 22 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
Oct 18 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
May 09 PHP
关于php开启错误提示的总结
Sep 24 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
phpstorm编辑器乱码问题解决
2014/12/01 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
jquery 学习之一 对象访问
2010/11/23 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
2018/05/16 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
vue全局自定义指令-元素拖拽的实现代码
2019/04/14 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
python生成器与迭代器详解
2019/01/01 Python
linux安装python修改默认python版本方法
2019/03/31 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
外语专业毕业生自荐信
2014/04/14 职场文书
道德演讲稿
2014/05/21 职场文书
小学师德师风演讲稿
2014/09/02 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript