Laravel框架执行原生SQL语句及使用paginate分页的方法
本文实例讲述了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 "%' . 在Laravel框架中,开发人员有时需要执行原生SQL语句或者使用内置的查询构建器。本篇文章将探讨如何在Laravel中实现这两种方法,并结合`paginate`分页功能。 我们来看如何执行原生SQL语句。在Laravel中,你可以使用`DB`门面来执行自定义的SQL查询。下面是一个示例: ```php 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语句,使用sprintf将参数插入SQL $sqlTmp = sprintf( "select a.id, a.code, a.attendanceRate, a.statisticTime, b.realName as userName, c.name as officeName from xxx a1 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; } ``` 在这个例子中,我们根据前端传递的参数动态构建了SQL查询,然后使用`DB::select()`执行查询并返回结果。 接下来,我们看看如何使用Laravel的查询构建器。查询构建器提供了一种更面向对象的方式来构建和执行SQL查询。以下是一个使用查询构建器的例子: ```php public function getList($data) { // 获取前端传来的参数 $user = $data['userId']; $office = $data['officeId']; $key = $data['oneKeySearch']; // 使用查询构建器创建查询 $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') ->selectRaw('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($user)) { $data = $data->where('a.userId', $user); } if (!empty($office)) { $data = $data->where('a.officeId', $office); } // 添加模糊搜索和联合查询 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()方法来分页 // $results = $data->paginate($perPage); // 返回结果 return $results; } ``` 在查询构建器示例中,我们创建了一个查询,使用`leftJoin`进行表连接,`selectRaw`选择列,`whereNull`处理软删除,以及`where`和`orWhere`添加条件。当需要分页时,可以调用`paginate`方法。 关于`paginate`分页,它是Laravel中非常方便的一个特性,可以帮助我们轻松地在数据集上实现分页。当你有了查询结果后,只需调用`paginate($perPage)`方法,传入每页需要显示的数据条数即可。例如: ```php $results = $data->paginate(20); ``` 这将会返回一个`LengthAwarePaginator`实例,包含了当前页的数据以及关于总页数、总记录数等信息。在视图中,你可以使用`$results->links()`输出分页链接,而`$results->items()`将返回当前页的数据。 Laravel提供了多种方式来执行SQL查询,包括原生SQL和查询构建器,它们都支持灵活的条件构造和分页功能,使得在处理数据时更加便捷。了解并熟练掌握这些方法对于提升Laravel应用的开发效率至关重要。





















- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2023年电大职业技能实训试题网络系统管理与维护完整版.docx
- “互联网+”创业计划书.doc
- IBM服务器运维及数据备份报告.pdf
- 八百方-医药电子商务的发展路径及未来.ppt
- 第8章-网络新技术与新趋势ppt课件(全).ppt
- C语言实践的心得体会范文.doc
- 2022网络技术实践报告.docx
- 电气工程及其自动化专业自荐书.docx
- 2023年linu计算机专业大学生实习报告.docx
- PLC的梯形图程序设计方法及应用实例.ppt
- python二级电子教案-第章-程序设计基本方法.ppt
- 办公自动化设备的使用和维护.ppt
- 2021-2022年收藏的精品资料网络经济的超边际分析网络经济对经济学的挑战.doc
- 大型网站东莞旅行社网站SEO优化方案.doc
- Logistic回归分析简介.docx
- C语言编程技巧在C语言学习中的作用.docx



评论0