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实现的仿阿里巴巴实现同类产品翻页
Dec 11 PHP
如何用php生成扭曲及旋转的验证码图片
Jun 07 PHP
php四种基础算法代码实例
Oct 29 PHP
php-perl哈希算法实现(times33哈希算法)
Dec 30 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
Dec 15 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
Jun 29 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
PHP实现获取并生成数据库字典的方法
May 04 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
Jan 20 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
关于query Javascript CSS Selector engine
2013/04/12 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
详解Document.Cookie
2015/12/25 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
Python中logging模块的用法实例
2014/09/29 Python
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
Python中异常重试的解决方案详解
2017/05/05 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
浅谈Python基础—判断和循环
2019/03/22 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
python实现登录与注册系统
2020/11/30 Python
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
英国假发网站:Hothair
2018/02/23 全球购物
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
墨西哥购物网站:Elektra
2020/01/21 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
土木工程专业个人求职信
2013/12/05 职场文书
大学自我评价
2014/02/12 职场文书
烹饪自我鉴定
2014/03/01 职场文书
合作意向书格式及范文
2014/03/31 职场文书
面试通知单大全
2015/04/20 职场文书
运动会广播稿200字
2015/08/19 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python