2016-02-15 4 views
0

У меня в таблице более 50000 записей. Взаимоотношение многим.Laravel 5 красноречивый кусок данных

отчеты Модель:

public function busines(){ 
     return $this->belongsToMany('App\Busines', 'busines_record', 'record_id', 'busines_id'); 
    } 

Busines модель:

public function records() 
    { 
     return $this->belongsToMany('App\Record', 'record_id'); 
    } 

Мой запрос:

$data = Records::with('busines')->where('show', '=', 1)->get(); 

Запрос давно выполнить. Как оптимизировать запрос?

+0

Попробуйте добавить основной указатель в поле 'show'. https://laravel.com/docs/5.2/migrations#creating-indexes –

ответ

0

Вы можете постраничной его:

$records = Records::with('busines')->where('show', '=', 1)->paginate(); 

и показать нумерацию страниц в представлении с:

{!! $records->links() !!} 

Или вы можете использовать кусок (см query builder docs "отрывов Результаты из таблицы"):

Records::with('busines')->chunk(100, function($records) { 
    foreach ($records as $record) { 
     dump($record->id); 
    } 
}); 
+0

Я использую jQuery плагинов datatables, пакет https://github.com/yajra/laravel-datatables. Как результат возврата использует кусок в Datatables :: of ($ data) -> make (true)? –

+0

У этого плагина есть поддержка для разбивки на страницы, разве это не решит вашу проблему? Сколько записей вы показываете на странице? –

+0

да paginate. 50 записей –

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