允许的内存大小为134217728字节耗尽(试图分配74735240字节)

时间:2017-05-09 19:32:06

标签: laravel

我尝试在我的laravel项目中创建一个搜索表单。

所以我想将所有几乎所有的表列都传递给视图,这样我就可以使用它们来创建dropbox,复选框等。

但是当我使用$var = Model::all();时,它会返回此错误:

  

允许的内存大小为134217728字节耗尽(尝试分配   74735240字节)

你能告诉我另一个解决方案吗?

这是我的控制者:

<?php

namespace App\Http\Controllers;

use App\Http\Requests;
use Illuminate\Http\Request;
use App\Lot;

class SearchController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $lots = Lot::all();
        return view('lots.search')->withLot($lots);
    }
}

谢谢!

1 个答案:

答案 0 :(得分:1)

有太多数据无法容纳在内存中。您可能应该对结果集进行分页。

https://laravel.com/docs/5.4/pagination#basic-usage

public function index()
{
    $lots = DB::table('lots')->paginate(15);

    return view('lots.search', ['lots' => $lots]);
}

或者您可以增加内存限制,但这不是最佳解决方案。

ini_set('memory_limit','160M');