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
提高PHP编程效率 引入缓存机制提升性能
Feb 15 PHP
PHP通过header实现文本文件下载的代码
Aug 08 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
Jun 03 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
最新最全PHP生成制作验证码代码详解(推荐)
Jun 12 PHP
php实现的中文分词类完整实例
Feb 06 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 PHP
PHP读取文件或采集时解决中文乱码
Mar 09 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
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
php实现多城市切换特效
2015/08/09 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
iview table高度动态设置方法
2018/03/14 Javascript
js实现各浏览器全屏代码实例
2018/07/03 Javascript
vue实现搜索功能
2019/05/28 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
【python】matplotlib动态显示详解
2019/04/11 Python
OpenCV 模板匹配
2019/07/10 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
python实现人工蜂群算法
2020/09/18 Python
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
市场营销个人求职信范文
2014/02/02 职场文书
高等教育专业自荐信范文
2014/03/26 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
注册资产评估专业求职信
2014/07/16 职场文书
新闻学专业求职信
2014/07/28 职场文书
新入职员工工作总结
2015/10/15 职场文书