Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择laravel 5中的大表_Laravel_Out Of Memory - Fatal编程技术网

选择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文件。我希望我能找到解决办法。谢谢