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
实时抓取YAHOO股票报价的代码
Oct 09 PHP
php读取msn上的用户信息类
Dec 05 PHP
php 获取select下拉列表框的值
May 08 PHP
PHP 字符串正则替换函数preg_replace使用说明
Jul 15 PHP
解析php DOMElement 操作xml 文档的实现代码
May 10 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
Jun 20 PHP
php计算到指定日期还有多少天的方法
Apr 14 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
Apr 15 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 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
模仿OSO的论坛(二)
2006/10/09 PHP
php 文件上传类代码
2011/08/06 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
CI框架无限级分类+递归的实现代码
2016/11/01 PHP
jQuery常见开发技巧详细整理
2013/01/02 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
原生js调用json方法总结
2018/02/22 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
Javascript的this详解
2019/03/23 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
Sanic框架流式传输操作示例
2018/07/18 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
Tensorflow 实现释放内存
2020/02/03 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
详解css3 flex弹性盒自动铺满写法
2020/09/17 HTML / CSS
用canvas画心电图的示例代码
2018/09/10 HTML / CSS
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
三维科技面试题
2013/07/27 面试题
高考备战决心书
2014/03/11 职场文书
安全演讲稿大全
2014/05/09 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
社区节水倡议书
2015/04/29 职场文书
详解Nginx 工作原理
2021/03/31 Servers
vue使用watch监听属性变化
2022/04/30 Vue.js