Laravel分页如何追加长串

时间:2017-06-14 06:44:53

标签: laravel pagination

我刚开始学习laravel。有一个问题,我从具有分页的5000条记录的数据库中做出选择。

我的数据看起来像这样 380673113513 380673113514 380673113515 380673113516 ...... 还有几千个

我将它们分成一个数组

$numberList = explode("\r\n", $request['inputList']);

我选择了分页

$objects = Number::has('object')->with('object')->whereIn('number', $numberList)->Paginate(1000);

为了处理分页,我重新传输了表单的数据

{{ $objects->appends(['inputList' => $_REQUEST['inputList']])->links() }}

因此我有这样的链接 http://telbase.dev/list?inputList=380673113513%0D%0A380673113514%0D%0A380673113515%0D%0A380673113516%0D%0A380673113517%0D%0A380673113518%0D%0A380673113519%0D%0A380673113520%0D%0A380673113521%0D%0A380673113522%0D%0A380673113523%0D%0A380673113524%0D%0A380673113525%0D%0A380673113526%0D%0A380673113527%0D%0A380673113528%0D%0A380673113529%0D%0A380673113530%0D%0.................&page=2

如果有大量数据,则字符串很长,服务器返回错误414 Request URI Too Large。我认为我最初做错了什么。如何在分页中正确传递如此大的请求。

ps对不起我的英文,我使用谷歌翻译)

3 个答案:

答案 0 :(得分:0)

您使用的是POST方法吗?如果不是,那么因为获取请求的长度限制在服务器配置的帖子中。

答案 1 :(得分:0)

web.php:

Route::post('/'data, '<controllername>@<functionname>');

控制器:

public function <functionname>(){
    //logic to create data
    $data = response()->json([
        'data' => $data
    ])
    return View::make('<view_name>', array('data' => $data));
}

然后您应该可以在视图中访问它:

{{$data[0]-><attribute>}}

或做一个foreach声明......

答案 2 :(得分:0)

web.php

    Route::get('/test', [
    'uses' => 'TestController@test',
    'as'=> 'test'
]);

Route::post('/test', [
    'uses' => 'TestController@test',
    'as'=> 'test'
]);

控制器

public function test(Request $request)
{
        $numberList = explode("\r\n", $request['inputList']);
        $objects = Number::has('object')->with('object')->whereIn('number', $numberList)->Paginate(10);
        return view('objects.test')->with('objects', $objects);
}

视图

<form class="form-horizontal" action="{{ route('test') }}" method="POST">
   <textarea class="form-control" name="inputList" id="inputList"></textarea>
   <button type="submit" class="btn btn-default">go</button>
   <input type="text" name="_token" value="{{ csrf_token() }}" hidden>
</form>

        @if ($objects->count() > 0)
            @foreach( $objects as $object)
                <tr>
                    <td>{{ $object->number }}</td>
                    <td>{{ $object->object->fio }}</td>
                </tr>
            @endforeach
            {{ $objects->links() }}
        @endif

当我在表单中发出请求时,结果会正常显示。 但是当我尝试转到第2页时,我会看到一个带有表单的空白页面。 全部因为当你转到第2页时,$ request [&#39; inputList&#39;]已经为空,因此$ objects也是空的。 那是为什么?