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程序设计有所帮助。