Отставание страницы при запросе больших данных в базе данных Laravel - PullRequest
0 голосов
/ 15 января 2020

Предположим, что запрос отфильтрует данные и вернет отфильтрованные данные в таблицу данных (yagra). Однако система запаздывает (страница продолжает загружаться) после запуска, поскольку данные слишком велики (данные более 5 м). Что я должен добавить, чтобы он мог загружать большие данные и передавать данные. Я использую фасад не красноречиво и знаю, что его разбивка на чанк / запрос может решить эту проблему. Код запроса приведен ниже:

    $data = $query->select('table1.id','table2.First_name')->get();

Буду признателен, если кто-нибудь может помочь с любым предложением, как я могу справиться с этим проблемным случаем? Цель состоит в том, чтобы просто отфильтровать данные и экспортировать их как csv (что я успешно сделал с меньшей базой данных, которую я тестировал ранее), но проблема возникла, поскольку текущая база данных, которую я только что подключил, слишком велика для запуска с существующим запросом. создал.

движков в конфигурационном файле:

'engines'        => [
    'eloquent'   => Yajra\DataTables\EloquentDataTable::class,
    'query'      => Yajra\DataTables\QueryDataTable::class,
    'collection' => Yajra\DataTables\CollectionDataTable::class,
    'resource'   => Yajra\DataTables\ApiResourceDataTable::class,
],

/*
 * DataTables accepted builder to engine mapping.
 * This is where you can override which engine a builder should use
 * Note, only change this if you know what you are doing!
 */
'builders'       => [
   // Illuminate\Database\Eloquent\Relations\Relation::class => 'eloquent',
    // Illuminate\Database\Eloquent\Builder::class            => 'eloquent',
    // Illuminate\Database\Query\Builder::class               => 'query',
    // Illuminate\Support\Collection::class                   => 'collection',
],

версия yagra:

    name : yajra/laravel-datatables-oracle
    descrip. : jQuery DataTables API for Laravel 4|5
    keywords : datatables, jquery, laravel
    versions : * v9.7.2

1 Ответ

1 голос
/ 15 января 2020

Используйте нумерацию страниц, как описано здесь .

$records_per_page = 50;
$data = $query->select('table1.id','table2.First_name')->paginate($records_per_page);

Тогда, на ваш взгляд, вы можете использовать ссылки разбиения на страницы, такие как

{{ $data->links() }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...