执行搜索后分页不起作用 [英] Pagination doesn't work after perform search

查看:84
本文介绍了执行搜索后分页不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Laravel有一个表格.我在这种形式和搜索选项中也使用了pagination.当我没有搜索任何内容时,分页效果很好.如果我搜索的记录超过10个(分页记录限制为10个),则它在第一页中完美显示结果,但在第二页或第三页中则显示整个数据库的记录.它会忽略搜索条件.

I have a form in Laravel. I used pagination in this form and search option too. Pagination works fine when I didn't search anything. If I search something which has records more than 10 (my pagination record limit is 10), it shows result perfectly in first page but in second page or third page it shows the records of whole database. It's ignore the search criteria.

控制器代码:

public function index()
{
    if (Input::has('invoiceNumber')) {
        $invoiceNumber = Input::get('invoiceNumber');
        $invoices = Invoice::where('invoiceNumber','like', '%'.$invoiceNumber.'%')->orderBy('date','desc')->paginate(10);
    } elseif (Input::has('client')) {
        $client = Input::get('client');
        $invoices = Invoice::where('client','like', '%'.$client.'%')->orderBy('date', 'desc')->paginate(10);
    } elseif (Input::has('startDate') && Input::has('endDate')) {
        $startDate = Input::get('startDate');
        $endDate = Input::get('endDate');
        $invoices = Invoice::whereBetween('date', [$startDate, $endDate])->orderBy('date', 'desc')->paginate(10);
    } elseif (Input::has('startDate')) {
        $startDate = Input::get('startDate');
        $invoices = Invoice::where('date', $startDate)->orderBy('date', 'desc')->paginate(10);
    } elseif (Input::has('endDate')) {
        $endDate = Input::get('endDate');
        $invoices = Invoice::where('date', $endDate)->orderBy('date', 'desc')->paginate(10);
    } else {
        $invoices = DB::table('invoices')
            ->join('vehicles', 'invoices.vehicle', '=', 'vehicles.registration')
            ->select(
                'invoices.*',
                'vehicles.brand',
                'vehicles.model',
                'vehicles.seat',
                'vehicles.remarks'
            )
            ->orderBy('date', 'desc')
            ->paginate(10);
    }
    return view('invoice.index',compact('invoices'));
}

执行搜索后,我的URL如下所示:

After performing search my URL look like this:

http://my-site.com/invoice?invoiceNumber=&client=&startDate=2016-01-01&endDate=2016-02-08

搜索后,当我单击页面2时,URL变为:

After this search when I click on page 2, the URL become this:

http://my-site.com/invoice?page=2

推荐答案

在您的视图文件中,渲染必须如下所示:

In your view file, the render has to be like given below:

{!! $invoices->appends(Input::except('page'))->render() !!}

这篇关于执行搜索后分页不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆