当前位置:首页 > CMS教程 > 其它CMS > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-10-25 14:55:43 浏览: 评论:0 

这篇文章主要介绍了Laravel框架执行原生SQL语句及使用paginate分页的方法,以类函数的形式给出了Laravel框架执行原生SQL语句以及paginate分页的相关操作技巧,需要的朋友可以参考下。

本文实例讲述了Laravel框架执行原生SQL语句及使用paginate分页的方法,分享给大家供大家参考,具体如下:

1、运行原生sql

  1. public function getList($data){ 
  2. //获取前端传过来的参数 
  3.   $user = $data['userId']; 
  4.   $office = $data['officeId']; 
  5.   $key = $data['oneKeySearch']; 
  6. //进行模糊搜索和联合查询 
  7.   $where = 'and 1=1 '
  8.   if($key!=null) { 
  9.     $where.= ' and ( a.code like "%' . $key . '%"'
  10.     $where.= ' or b.name like "%' . $key . '%"'
  11.     $where.= ' or c.name like "%' . $key . '%")'
  12.   } 
  13. //对前端传回的字段进行判断,如果不为空则执行条件查询 
  14.   if($user!=null){ 
  15.     $user='and a.userId='.$user
  16.   } 
  17.   if($office!=null){ 
  18.     $office='and a.officeId='.$office
  19.   } 
  20. //自定义原生sql语句,%s可以传参数到sql语句中,格式如下: 
  21.   $sqlTmp=sprintf('select a.id,a.code,a.attendanceRate,a.statisticTime, 
  22.             b.`realName` as userName,c.`name` as officeName 
  23.             from xxxa1 
  24.             LEFT JOIN xxx2 b ON a.userId=b.id 
  25.             LEFT JOIN xxx3 c ON a.officeId=c.id 
  26.     where a.deleted_at is null and 1=1 %s %s %s ORDER BY a.code 
  27.     ', $where,$office,$user); 
  28. //执行SQL语句 
  29.   $results = DB::select($sqlTmp); 
  30. //返回结果 
  31.   return $results

2、运行查询构建器

  1. public function getList($data){ 
  2. //获取前端传过来的参数 
  3.   $user = $data['userId']; 
  4.   $office = $data['officeId']; 
  5.   $key = $data['oneKeySearch']; 
  6. /* 
  7.  * 1、表格使用别名:直接是 “表名 as table1" ,(下面是xxx1 as a) 
  8.  * 2、左连接:DB::table('表1') 
  9.  *        ->leftJoin('表2', '表1.id', '=', '表2.外键关联') 
  10.  * 3、因为使用了软删除,所以在查询的时候要加上 ->whereNull('a.deleted_at') 
  11.  * 4、使用 DB::raw方法创建一个原生表达式,写进要查询的字段名称 
  12.  *    ->select(DB::raw('a.id,a.code,b.`realName` as userName,c.`name` as officeName')) 
  13.  *5、使用orderBy进行排序 
  14.  * 
  15.  */ 
  16.      $data=DB::table('biz_attendance_sta as a'
  17.        ->leftJoin('sys_user as b''b.id''=''a.userId'
  18.        ->leftJoin('sys_office as c''c.id''=''a.officeId'
  19.       ->select(DB::raw('a.id,a.code,a.attendanceRate,a.statisticTime, 
  20.               b.`realName` as userName,c.`name` as officeName')) 
  21.        ->whereNull('a.deleted_at'
  22.        ->orderBy('a.code''desc'); 
  23.  //使用 if(!empty(xxx)){},来判断前端传过来的参数是否为空,不为空则执行条件查询 
  24.      if(!emptyempty($user)){ 
  25.        $data = $data->where( 'a.userId',$user); 
  26.      } 
  27.     if(!emptyempty($office)){ 
  28.       $data = $data->where( 'a.officeId',$office); 
  29.     } 
  30.  //使用 if(!empty(xxx)){},来判断前端传过来的参数是否为空,不为空则执行模糊搜索和联合查询 
  31.     if (!emptyempty($key)) { 
  32.       $data = $data->where(function ($queryuse ($key) { 
  33.         $query->where('a.code''like'"%{$key}%"
  34.           ->orWhere('b.name''like'"%{$key}%"
  35.           ->orWhere('c.name''like'"%{$key}%"); 
  36.       }); 
  37.     } 
  38. //使用->paginate(10)进行分页 
  39.     $results=$data ->paginate(10); 
  40.     return $results
  41. }

Tags: Laravel框架 SQL paginate

分享到: