Laravel框架执行原生SQL语句及使用paginate分页的方法
本文实例讲述了Laravel框架执行原生SQL语句及使用paginate分页的方法。分享给大家供大家参考,具体如下:
1、运行原生sql
publicfunctiongetList($data){
//获取前端传过来的参数
$user=$data['userId'];
$office=$data['officeId'];
$key=$data['oneKeySearch'];
//进行模糊搜索和联合查询
$where='and1=1';
if($key!=null){
$where.='and(a.codelike"%'.$key.'%"';
$where.='orb.namelike"%'.$key.'%"';
$where.='orc.namelike"%'.$key.'%")';
}
//对前端传回的字段进行判断,如果不为空则执行条件查询
if($user!=null){
$user='anda.userId='.$user;
}
if($office!=null){
$office='anda.officeId='.$office;
}
//自定义原生sql语句,%s可以传参数到sql语句中,格式如下:
$sqlTmp=sprintf('selecta.id,a.code,a.attendanceRate,a.statisticTime,
b.`realName`asuserName,c.`name`asofficeName
fromxxxa1
LEFTJOINxxx2bONa.userId=b.id
LEFTJOINxxx3cONa.officeId=c.id
wherea.deleted_atisnulland1=1%s%s%sORDERBYa.code
',$where,$office,$user);
//执行SQL语句
$results=DB::select($sqlTmp);
//返回结果
return$results;
}
2、运行查询构建器
publicfunctiongetList($data){
//获取前端传过来的参数
$user=$data['userId'];
$office=$data['officeId'];
$key=$data['oneKeySearch'];
/*
*1、表格使用别名:直接是“表名astable1",(下面是xxx1asa)
*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`asuserName,c.`name`asofficeName'))
*5、使用orderBy进行排序
*
*/
$data=DB::table('biz_attendance_staasa')
->leftJoin('sys_userasb','b.id','=','a.userId')
->leftJoin('sys_officeasc','c.id','=','a.officeId')
->select(DB::raw('a.id,a.code,a.attendanceRate,a.statisticTime,
b.`realName`asuserName,c.`name`asofficeName'))
->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程序设计有所帮助。