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中文件下载功能实现超详细流程分析
Jun 13 PHP
php中addslashes函数与sql防注入
Nov 17 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
php通过array_merge()函数合并关联和非关联数组的方法
Mar 18 PHP
php中mysql操作buffer用法详解
Mar 19 PHP
Laravel 5框架学习之环境与配置
Apr 08 PHP
php显示页码分页类的封装
Jun 08 PHP
基于php编程规范(详解)
Aug 17 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
PHP实现验证码校验功能
Nov 16 PHP
python进程与线程小结实例分析
Nov 11 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
Terran兵种介绍
2020/03/14 星际争霸
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
php数据库连接时容易出错的特殊符号问题
2010/09/01 PHP
浅谈php冒泡排序
2014/12/30 PHP
php强制下载文件函数
2016/08/24 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
javascript forEach通用循环遍历方法
2010/10/11 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
Python 不同对象比较大小示例探讨
2014/08/21 Python
python自动化生成IOS的图标
2018/11/13 Python
linux安装python修改默认python版本方法
2019/03/31 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
python中有帮助函数吗
2020/06/19 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
养殖项目策划书范文
2014/01/13 职场文书
2014年新教师工作总结
2014/11/08 职场文书
学生通报表扬范文
2015/05/04 职场文书
高二语文教学反思
2016/02/16 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python