Laravel框架执行原生SQL语句及使用paginate分页的方法
作者:skyisbluening 发布时间:2023-11-24 00:27:24
标签:Laravel,SQL语句,分页
本文实例讲述了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程序设计有所帮助。
来源:https://blog.csdn.net/weixin_38682852/article/details/79651879
0
投稿
猜你喜欢
- 求英文字母、数字、下划线、汉字的js正则表达式英文字母或数字或下划线,英文字母数字下划线是:/^\w+$/汉字的是:/^[\u0391-\u
- google找到这样一个解决方法: 在上传控件中插入了值,就只能通过form的reset功能来清空了,但是form里面其他的值也被reset
- jqGrid是一个优秀的基于jQuery的DataGrid框架,想必大伙儿也不陌生,网上基于ASP的资料很少,我提供一个,数据格式是json
- 1、使用索引来更快地遍历表。缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索
- 本文实例讲述了PHP abstract 抽象类定义与用法。分享给大家供大家参考,具体如下:PHP抽象类应用要点:1.定义一些方法,子类必须完
- <% dim conn,mdbfile mdbfile=server.mappath("数据库名称.mdb") s
- for循环只是一个多一点的代码,同时循环添加到它。而所涉及的一个循环的共同任务是: 设置一些计数器变量的初始值。 请检查条件语句是正确的。
- 目的现有两幅栅格图像,一个是某地区道路栅格图,一个是某地区土地利用类型图,需要将道路叠加到土地利用类型图中,即叠加后,重合的像元值以道路图为
- 一). ubuntu下mysql安装布局:/usr/bin  
- 仿照常见的那个图片变换flash做的效果,纯js。不过滤镜变换只对应ie,ff只能看到一般的切换。这个js做的效果最早在sina看到,这里把
- uWSGI是一个Web应用服务器,它具有应用服务器,代理,进程管理及应用监控等功能。它支持WSGI协议,同时它也支持自有的uWSGI协议,该
- 发现很多朋友对 CSS 的优先权不甚了解,规则很简单。需要说明的一点,如果你的样式管理需要深层判断 CSS 的优先权,更应反思自己的 CSS
- ASP开发中有用的函数(function)集合,挺有用的,请大家保留!'******************************
- 在看到7yue博客——“换手来用”的思考 有这么一句话:RIA是一个更趋向于“体验”设计的领域,不仅仅包括“开发人员”,还包括“设计人员”,
- 什么是性能分析?性能分析是衡量应用程序在代码级别的相对性能。性能分析将捕捉的事件包括:CPU的使用,内存的使用,函数的调用时长和次数,以及调
- Asp开发 联通CDMA以下是在开发wap中的随笔,其中一些对于“老鸟”来说,谈不上什么,希望对初学者有所帮助,大家有什么小技巧,欢迎顶上来
- 本文实例讲述了phpmyadmin中禁止外网使用的方法。分享给大家供大家参考。具体方法如下:首先,在phpmyadmin文件夹中找到 php
- 学习https://matplotlib.org/gallery/index.html 记录,描述不一定准确,具体请参考官网Matplotl
- javascript曾一度被认为是玩具型的语言,因为它太容易上手,而且,javascript曾一度担任为web站点“打杂”的职责。直到Aja
- 从MySQL 5.0.2开始,通过mysql_stmt_attr_set() C API函数实现了服务器端光标。服务器端光标允许在服务器端生