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 相关文章推荐
mysql建立外键
Nov 25 PHP
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
php错误级别的设置方法
Jun 17 PHP
php抽奖小程序的实现代码
Jun 18 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
php给图片加文字水印
Jul 31 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
PHP基于反射机制实现插件的可插拔设计详解
Nov 10 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
Oct 10 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
Oct 31 PHP
PHP get_html_translation_table()函数用法讲解
Feb 16 PHP
PHP底层运行机制与工作原理详解
Jul 31 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中的Session和Cookie
2013/06/21 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
浅述python中深浅拷贝原理
2018/09/18 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
1亿有多大教学反思
2014/05/01 职场文书
大学团日活动总结书
2015/05/11 职场文书
婚宴父母致辞
2015/07/27 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python
javascript的var与let,const之间的区别详解
2022/02/18 Javascript
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android