mysql原生分页语句_Laravel框架执行原生SQL语句及使用paginate分页的方法

本文展示了如何在Laravel框架中执行原生SQL语句以及利用paginate进行分页。通过实例,详细解释了如何根据前端传来的参数进行条件查询和模糊搜索,并给出了两种不同的实现方式:一种是直接使用原生SQL,另一种是使用查询构建器。最后,通过paginate方法实现了数据的分页展示。
摘要由CSDN通过智能技术生成

本文实例讲述了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中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值