Laravel 框架 ajax多条件搜索后 分页

 一 、 自定义分页

一 、控制器
/*
 * 搜索
 */
public function sou(){
    //接值
    $name=Input::get('name');
    $start=Input::get('start');
    $end=Input::get('end');
    //拼接搜索条件
    $where='1';
    //模糊查询
    if(!empty($name)){
         $where.=" and e_title  like '%$name%'";
    }
    //时间段
    if(!empty($start)){
        if(!empty($end)){
            $where.=" and e_time  between  '$start' and '$end'";
        }
    }
    //接收当前页码
    $page=Input::get('pages');
    //echo $page;die;
    //判断当前页码是否存在
    $pages = isset($page) ? $page : 1 ;
    //echo $pages;die;
    //计算总条数
    $count = DB::table('email')->count();
    //设置每一页显示的条数
    $pageSize = 3 ;
    //计算总页数
    $pageSum = ceil($count/$pageSize);
   // echo $pageSum;
    //计算偏移量
    $offset = ($pages - 1)*$pageSize;
    //echo $offset;die;
    //计算上一页 下一页
    $last = $pages<=1 ? 1 : $pages-1 ;
    $next = $pages>=$pageSum ? $pageSum : $pages+1 ;
    //拼接A链接
    $str = '';
    $str .= "<a href='javascript:void(0);' onclick='page(1)'>首页</a>";
    $str .= "<a href='javascript:void(0);' onclick='page($last)'>上一页</a>";
    $str .= "<a href='javascript:void(0);' onclick='page($next)'>下一页</a>";
    $str .= "<a href='javascript:void(0);' onclick='page($pageSize)'>尾页</a>";
    //查询分页后的数据信息
    $results = DB::select("select * from email where $where limit $offset,$pageSize");
   //关键字变红
    foreach($results as $key=>$val){
        $results[$key]->e_title=str_replace($name,"<font color='red'>$name</font>",$val->e_title);
    }

 //渲染
        return view('sou',['list'=>$results,'page'=>$str,'name'=>$name,'start'=>$start,'end'=>$end]);
}

二 、视图层
//分页输出 
<?php echo $page?> 
三、 搜索传后台
function sou(page){
   // 搜索的值    
 var na=$("#name").val();
  //开始的时间
 var sta=$("#start").val();
 //结束的时间
 var en=$("#end").val();
  
         $.get("{{URL('sou')}}", { pages:page,name:name,start:start,end:end},function(msg){
        //替换整个页面
            $("#html").html(msg)
         } );
 }

二、框架分页

一、控制器

 public function show(Request $request)
    {

        $lists = $this->_service->getList($request, 15); //使用服务层 
        $m_id=empty($request->m_id)?0:$request->m_id;    //接值
        $g_id=empty($request->g_id)?0:$request->g_id;    //接值
        $list_data= $ListService->getData(request());         //获取查询数据
        $list_groups = $ListGroupService->getData(request());
        return view('management.list',compact('lists','list_data','list_groups ','m_id','g_id'));
    }

二、服务层

public function getList(Request $request, $page = null)
    {
        //判断拼接查询条件
        if(!empty($request->g_id)){
            $where['g_id']=$request->g_id;
        }
        if(!empty($request->m_id)){
            $where['m_id']=$request->m_id;
        }

        $list= new ListModel;  //实例化Model

        if($request->m_id <>'' || $request->g_id<>'' ){
            $list= $list->where($where) ->whereOr($where);
        }

        $list= $list
            ->leftJoin('list_group as g','list_data.g_id','=','g.id')
            ->select('list_data.*','g.name')
            ->orderBy('index', 'desc');
             
            //->toSql(); dd($list); //打印sql语句;

        if($page != null) {
            return $list->paginate($page); //设置分页
        }

        return $list->get();
    }

三、视图层

//默认使用的分页
{{$lists->render()}}
//如果想在前台分页连接中附加参数,可以在controller绑定view中增加参数:
 return view('management.list',compact('lists','m_id','g_id'));
//添加分页参数,显示分页
@if($m_id <> 0 || $g_id <> 0)
    //除去页面上的分页链接代码
    <div style="display: none">{{$lists->appends(['m_id'=>$m_id,'g_id'=>$g_id])->render()}}</div>
@endif

这样前台分页的地址就从?page=3 变成?m_id=1&g_id=2&page=3 了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值