我刚开始学习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() }}
如果有大量数据,则字符串很长,服务器返回错误414 Request URI Too Large。我认为我最初做错了什么。如何在分页中正确传递如此大的请求。
ps对不起我的英文,我使用谷歌翻译)
答案 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也是空的。 那是为什么?