У меня похожая проблема, и я решил ее, используя composer require yajra/laravel-datatables-oracle:"~9.0"
. С помощью datatables вы можете использовать серверную загрузку, которая займет около 5 секунд для загрузки 15000 записей.
Сначала установите пакет, следуя инструкциям: install yajra / datatables .
Во-вторых, установите маршрут к функции, которая будет извлекать данные в контроллере, например:
Route::get('/subscribers/render-subscribers-datatable', 'SubscribersController@render_subscribers_datatable')->name('render_subscribers_datatable')->middleware('auth');
В-третьих, настройте объект данных в представлении для получения и обработки данных, например:
$('#subscribers').DataTable({
responsive: true,
processing: true,
deferRender: true,
serverSide: true,
bLengthChange: false,
searchDelay: 500,
pageLength: 10,
ajax: '{{ route('render_subscribers_datatable') }}',
columns: [
{ data: 'active', orderable: false, searchable: false, className: "text-center"},
{ data: 'client_name' },
{ data: 'date_of_birth' },
{ data: 'personal_id_number' },
{ data: 'partner_number' },
{ data: 'phone' },
{ data: 'delivery_address' },
{ data: 'email' },
{ data: 'action', orderable: false, searchable: false, className: "text-center"},
],
});
Правильно сконфигурируйте столбцы для вашего проекта ...
Далее, отработайте контроллер, как:
public function render_subscribers_datatable(Request $request)
{
// Check if Request Came From Ajax
if($request->ajax())
{
// Get data
$dump = DB::table('tbl_subscribers')->select()->get();
// Return datatable
return Datatables::of($dump)->make(true);
}
// Else, redirect
// redirect with message
return redirect()->route('home')->with('error', 'cant process the request.');
}
Надеюсь, это помогло.