2014-09-25 6 views
4

Когда я пытаюсь выбрать некоторые поля с присоединиться запрос с пагинацией его показать собственной ошибки, какпамяти в Laravel пагинацией

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

Не могли бы вы указать код, который вы используете в случае 'paginate()' для доступа к переменной '$ price_all' внутри вашего представления? – matpop

+2

Я бы порекомендовал вам установить https://github.com/barryvdh/laravel-debugbar, а затем проверить отображаемый журнал запросов. Вы могли бы значительно улучшить свой запрос, просто вычислив разделение счетчиков, оставляя без объединения, так как вы не используете где. Затем просто создайте пейджер, используя Paginator :: make see docs – David

ответ

3

Попробуйте использовать смещение & Предел вместо paginate.

Смежные вопросы