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程序效率优化的一些策略小结
Jul 17 PHP
php中获取指定IP的物理地址的代码(正则表达式)
Jun 23 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
Mar 27 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
php实现利用phpexcel导出数据
Aug 24 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
php获取本机真实IP地址实例代码
Mar 31 PHP
PHP连接MySQL进行增、删、改、查操作
Feb 19 PHP
CodeIgniter框架常见用法工作总结
Mar 16 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
PHP实现QQ登录的开原理和实现过程
Feb 04 PHP
tp5修改(实现即点即改)
Oct 18 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 结果集的分页实现代码
2009/03/10 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
php define的第二个参数使用方法
2013/11/04 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
php实现微信支付之企业付款
2018/05/30 PHP
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
理论讲解python多进程并发编程
2018/02/09 Python
一百行python代码将图片转成字符画
2021/02/19 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
python实现猜拳小游戏
2020/04/05 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
python实现猜数游戏
2020/03/27 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
nginx 添加http_stub_status_module模块
2022/05/25 Servers