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 相关文章推荐
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
php 图片上传类代码
Jul 17 PHP
Discuz!下Memcache缓存实现方法
May 28 PHP
jQuery 源码分析笔记
May 25 PHP
Yii框架登录流程分析
Dec 03 PHP
完美解决thinkphp验证码出错无法显示的方法
Dec 09 PHP
php 在线导入mysql大数据程序
Jun 11 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
Sep 30 PHP
PHP合并数组函数array_merge用法分析
Feb 17 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
PHP中数组转换为SimpleXML教程
Jan 27 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 adodb连接mssql解决乱码问题
2009/06/12 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
php简单实现数组分页的方法
2016/04/30 PHP
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
使用js实现数据格式化
2014/12/03 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
React中Ref 的使用方法详解
2020/04/28 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
用Python编写简单的定时器的方法
2015/05/02 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
python中的for循环
2018/09/28 Python
python实现自动登录后台管理系统
2018/10/18 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
python 中如何获取列表的索引
2019/07/02 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
会计专业自我鉴定范文
2013/10/06 职场文书
工程项目经理岗位职责
2013/12/15 职场文书
公司庆典活动邀请函
2014/01/09 职场文书
项目计划书范文
2014/01/09 职场文书
超市采购员岗位职责
2014/02/01 职场文书