laravel分页中的内存大小错误

时间:2014-09-25 06:32:51

标签: laravel laravel-4 pagination

当我尝试使用分页连接查询选择某个字段时,它会显示错误,如

Allowed memory size of 134217728 bytes exhausted (tried to allocate 45797376 bytes)

我的查询是

$price_all = DB::table('model_price')
            ->join('operator_model','model_price.model_id','=','operator_model.id')
            ->join('operator_route','operator_model.operator_route_id','=','operator_route.id')
            ->join('route', 'operator_route.route_id', '=', 'route.id')
            ->join('operator', 'operator_route.operator_id', '=', 'operator.id')
            ->select('model_price.id', 'model_price.price', 'route.route_name', 'operator.operator_name')
            ->paginate(2);

在我的数据库中,只存储了5条记录。这不是大数据。

当我尝试没有分页时,它工作正常。像

$price_all = DB::table('model_price')
                ->join('operator_model','model_price.model_id','=','operator_model.id')
                ->join('operator_route','operator_model.operator_route_id','=','operator_route.id')
                ->join('route', 'operator_route.route_id', '=', 'route.id')
                ->join('operator', 'operator_route.operator_id', '=', 'operator.id')
                ->select('model_price.id', 'model_price.price', 'route.route_name', 'operator.operator_name')
                ->get();

现在我该如何优化此查询。

1 个答案:

答案 0 :(得分:0)

尝试使用Offset&限制而不是分页。

$price_all = DB::table('model_price')
               ->join('operator_model','model_price.model_id','=','operator_model.id')
               ->join('operator_route','operator_model.operator_route_id','=','operator_route.id')
               ->join('route', 'operator_route.route_id', '=', 'route.id')
               ->join('operator', 'operator_route.operator_id', '=', 'operator.id')
               ->select('model_price.id', 'model_price.price', 'route.route_name', 'operator.operator_name')
               ->skip(0)
               ->take(2)
               ->get();