本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

php 原生sql 分页查询,Laravel框架执行原生SQL语句及使用paginate分页的方法相关推荐

  1. 查询Oracle正在执行的sql语句

    --查询Oracle正在执行的sql语句及执行该语句的用户 [sql] view plaincopy SELECT b.sid oracleID, b.username 登录Oracle用户名, b. ...

  2. 查询Oracle正在执行的sql语句,锁表,解锁

    原文出处:http://blog.csdn.net/jlds123/article/details/6572559 ----------------------- --查询Oracle正在执行的sql ...

  3. oracle查运行sql语句,查询Oracle正在执行的SQL语句

    查询Oracle正在执行的sql语句及执行该语句的用户 查看正在执行sql的发起者的调用程序 查出oracle当前的被锁对象 结束当前的锁对象 无 SELECT b.sid oracleID, b.u ...

  4. java分页查询_面试官:数据量很大,分页查询很慢,有什么优化方案?

    准备工作 一般分页查询 使用子查询优化 使用 id 限定优化 使用临时表优化 关于数据表的id说明 <Java 2019 超神之路> <Dubbo 实现原理与源码解析 -- 精品合集 ...

  5. 如何查看Linq to SQL运行时,实际执行的Sql语句

    调试Linq to sql代码是, 如果遇到错误,很难判断错误的原因是什么,如果能够输出实际执行的sql原文,对于我们寻找错误的原因有有很大帮助. 以下是我用到的方法: StringBuilder s ...

  6. mysql动态sql循环语句_mysql存储过程循环遍历sql结果集,并执行动态sql

    /* 将其他几张表数据复制到一张总表中 */ DROP PROCEDURE IF EXISTS sp_customer; CREATE PROCEDURE sp_customer() BEGIN -- ...

  7. sql并行查询oracle,oracle 查看并行sql语句的并行数量

    1.执行sql:select /*+ parallel(a,4) */ * from tf_f_user a where rownum<100000; 2.如何查看该sql语句的并行数量: se ...

  8. oracle分页查询中的page,用简单的例子解释Oracle分页查询

    什么是分页查询 分页查询就是把query到的结果集按页显示.比如一个结果集有1W行,每页按100条数据库.而你获取了第2页的结果集. 为什么要分页查询 如果一个结果集有几十W行,那么在一个页面上显示肯 ...

  9. laravel 框架maatwebsite/excel拓展导出excel增加sheets分页功能

    laravel的maatwebsite/excel是一个功能很强大的插件,但是文档相对简单了点 怎么引入插件就不写了,composer地址:maatwebsite/excel - Packagist ...

最新文章

  1. web设计经验一 提升移动设备响应式设计的8个建议
  2. 方法论之 如何解决一个问题
  3. qsort七种排序方法
  4. 全国计算机等级考试 简称NCRE,长春大学2018年下半年全国计算机等级考试(简称NCRE)招生简章...
  5. linux远程白名单,Linux的Iptables命令实战2—设置白名单
  6. TypeError: 'dict' object is not callable
  7. 最优化学习笔记(三)最速下降法
  8. mysql where条件使用了or会不会扫全表
  9. 苹果10亿美元收购英特尔手机基带业务 买下一颗iPhone“定芯丸”
  10. Python常用图像处理
  11. k进制正整数的对k-1取余与按位取余
  12. 《矩阵分析》Ⅳ——三对角矩阵的追赶法matlab实现
  13. [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之灯光介绍Lights...
  14. 简单解决 Blocked a frame with origin XXX from accessing a cross-origin 。iframe跨域问题
  15. SAP: Query创建教程
  16. uni-app关于tabBar配置
  17. STM32使用RTC+BKP+PWR+EXTI
  18. 邮箱发送附件 附件大小有限制
  19. 2019美团机器学习/数据挖掘算法实习生笔试 编程题修改矩阵
  20. 域名系统就是域名服务器吗,域名系统五个服务器有什么区别吗

热门文章

  1. 解决不显示menu图标问题
  2. ubuntu18.04能够连wifi,但无法上网【解决方案】
  3. win10补丁不适用计算机,win10系统安装media feature pack提示:【此更新不适用于您的计算机】的解决方法...
  4. 20000元!魅族史上最贵的手机:无开孔+无按键,为什么会怀才不遇
  5. 萤石开放平台——摄像头取流有问题怎么排查?
  6. docker-compose文件中设置网络
  7. 用树莓派制造一支敲击乐队
  8. File Zilla连接Ubuntu 失败
  9. 在Linux,误删磁盘分区怎么恢复呢【转】
  10. android 颜色渐变动画,Android渐变研究