选择laravel 5中的大表
我想知道如何在控制器中获取大量行,并将其显示到视图中。我当前的代码如下所示 这是控制器。选择laravel 5中的大表,laravel,out-of-memory,Laravel,Out Of Memory,我想知道如何在控制器中获取大量行,并将其显示到视图中。我当前的代码如下所示 这是控制器。 $users = \App\Models\User::select ('id','first_name','last_name','created_at') ->where('friend_id', '=', 0) ->orderBy('created_at')->get(); return view('layouts.users.frie
$users = \App\Models\User::select ('id','first_name','last_name','created_at')
->where('friend_id', '=', 0)
->orderBy('created_at')->get();
return view('layouts.users.friends', compact('users'));
@if (!empty($users))
@foreach($users as $user)
<tr>
<?php $count++ ?>
<td>
{!! $user->id !!}
</td>
<td>{!! $user->first_name .' ' .$user->last_name !!}</td>
<td> {!! $user->created_at->format("d-m-y") !!} </td>
</tr>
@endforeach
@endif
这就是视图。
$users = \App\Models\User::select ('id','first_name','last_name','created_at')
->where('friend_id', '=', 0)
->orderBy('created_at')->get();
return view('layouts.users.friends', compact('users'));
@if (!empty($users))
@foreach($users as $user)
<tr>
<?php $count++ ?>
<td>
{!! $user->id !!}
</td>
<td>{!! $user->first_name .' ' .$user->last_name !!}</td>
<td> {!! $user->created_at->format("d-m-y") !!} </td>
</tr>
@endforeach
@endif
@if(!empty($users))
@foreach($users作为$user)
{!!$user->id!!}
{!!$user->first\u name.'.$user->last\u name!!}
{!!$user->created_at->format(“d-m-y”)
@endforeach
@恩迪夫
现在表中有40000行,当尝试获取视图错误代码500时,内存不足。我必须弄到所有的行。请告诉我该怎么办。在这里我听说过拉威尔5号。但是,我不知道该在视图上显示给谁。请提供帮助。如果您只需要显示数据,则可以使用
分页
。您可以查看用于分页的官方文档
如果您需要其他复杂的计算和操作,您需要一些循环优化方法。这里几乎没有可能的事情,我个人尝试做的一件事是将结果分块,并在过程中组装我需要的视图部分,然后将其传递给主视图: 所以你可以有这样的东西:
$the_view = "";
\App\Models\User::select('id', 'first_name', 'last_name', 'created_at')
->where('friend_id', '=', 0)
->orderBy('created_at')->chunk(4000, function ($user_chunk) use (&$the_view) {
foreach ($user_chunk as $user) {
$the_view .= "<td >" . $user->id . "</td >" .
"<td >" . $user->first_name . " " . $user->last_name . "</td >" .
"<td > " . $user->created_at->format('d-m-y') .
" </td ></tr >";
}
});
return view('layouts.users.friends', compact('the_view'));
我不会说这被证明是有效的,但我认为应该
另一种不推荐的方法是玩弄你的记忆限制,例如:
ini_set('memory_limit', '256M');
PS:就像我说的,这是不推荐的。试试这一块,看看它能让你知道你能做什么
你试着翻页吗?例如,每页只能获得10行或100行?我不能分页,因为我必须在显示数据后创建excel文件。在视图中。excel插件不支持分页。您是否在
php.ini
中检查了memory\u limit
?是的,这很好,我想我必须使用分页,因为没有人希望看到40000行的excel文件。我希望我能找到解决办法。谢谢