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 相关文章推荐
如何使用PHP中的字符串函数
Oct 09 PHP
php下用GD生成生成缩略图的两个选择和区别
Apr 17 PHP
黑夜路人出的几道php笔试题
Aug 04 PHP
一些php项目中比较通用的php自建函数的详解
Jun 06 PHP
PHP 使用pcntl和libevent 实现Timer功能
Oct 27 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
php站内搜索关键词变亮的实现方法
Dec 30 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
详解php比较操作符的安全问题
Dec 03 PHP
Yii控制器中操作视图js的方法
Jul 04 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 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
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
php格式化json函数示例代码
2016/05/12 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
JavaScript 的继承
2011/10/01 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
基于ajax和jsonp的原生封装(实例)
2017/10/16 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
python 实现识别图片上的数字
2019/07/30 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
Python如何生成xml文件
2020/06/04 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
新闻编辑自荐书范文
2014/02/12 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
认真学习保证书
2015/02/26 职场文书
报案材料怎么写
2015/05/25 职场文书
单位证明范文
2015/06/18 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书