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

作者:skyisbluening 时间:2023-11-24 00:27:24 

本文实例讲述了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框架的PHP程序设计有所帮助。

来源:https://blog.csdn.net/weixin_38682852/article/details/79651879

标签:Laravel,SQL语句,分页
0
投稿

猜你喜欢

  • python使用glob检索文件的操作

    2022-04-26 19:05:49
  • php数组函数序列之array_unique() - 去除数组中重复的元素值

    2023-11-18 11:14:06
  • Python全栈之线程详解

    2021-05-21 17:44:21
  • Jquery中Ajax 缓存带来的影响的解决方法

    2011-05-21 16:14:00
  • JS+ASP实现无刷新新闻列表之分页

    2007-08-22 12:57:00
  • vue2 设置router-view默认路径的实例

    2023-07-02 17:03:02
  • javascript DOM实用学习资料第1/3页

    2024-04-25 13:09:44
  • python selenium 查找隐藏元素 自动播放视频功能

    2022-03-01 18:54:14
  • vscode使用chatGPT 的方法

    2022-10-10 15:55:38
  • Python+matplotlib实现堆叠图的绘制

    2023-07-21 17:38:35
  • php下常用表单验证的正则表达式

    2024-05-03 15:35:08
  • python实现学生管理系统

    2022-12-18 02:42:22
  • python opencv实现任意角度的透视变换实例代码

    2023-11-09 15:14:42
  • JavaScript解决Joseph问题

    2008-06-21 17:11:00
  • phpword插件导出word文件时中文乱码问题处理方案

    2024-05-13 09:24:03
  • Python面向对象之反射/自省机制实例分析

    2022-07-27 06:57:53
  • python双向循环链表实例详解

    2023-08-04 04:53:06
  • Python数学建模PuLP库线性规划入门示例详解

    2023-06-13 13:06:20
  • Python三元运算实现方法

    2021-12-27 06:02:52
  • Python实现孤立随机森林算法的示例代码

    2021-11-25 14:38:24
  • asp之家 网络编程 m.aspxhome.com