Saya mencoba mengimplementasikan Datatable dengan Laravel tetapi saya memiliki masalah ketika tabel saya memiliki banyak baris karena Datatable mendapatkan SEMUA dalam satu permintaan dan kemudian pagination ada di sisi JS. Bisakah saya menggunakan pagination Laravel atau dapatkah saya mengembalikan baris yang diberi halaman dengan metode paginate()
dari Eloquent pada metode ajax? Karena ini adalah masalah besar untuk proyek saya. Pemuatan data sangat lambat. Ketika saya mencari beberapa pengolah kata juga sangat lambat dan setelah beberapa operasi seperti sort
, search
dll. Halaman membeku dan tidak ada yang terjadi.
Saya berharap bahwa seseorang memiliki masalah yang sama seperti ini.
serverSide: true,
processing: true,
render: true,
columns: [
{data: 'code'},
{data: 'name', "defaultContent": "<i>Not set</i>"},
{data: 'native_name', "defaultContent": "<i>Not set</i>"},
{data: 'action'}
],
ajax: '{!! route('dt-languages') !!}'
Anda mungkin menggunakan koleksi alih-alih kueri? Bisakah Anda menempelkan kode sisi server Anda? Terima kasih!
Saya menggunakan pola repositori dan di LanguageRepository.php saya, saya memiliki:
return $this->languages->select('languages.*')->get();
Anda harus menghapus get to use query builder.
return $this->languages->select('languages.*');
Oke. Sekarang terlihat lebih baik. Saya akan mengujinya lagi dan akan menulis hasil saya.
Tapi sementara itu ada satu masalah lagi. Ketika saya mencoba mencari beberapa kata, saya mendapatkan kesalahan ini:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'languages.action' in 'where clause' (SQL: select count(*) as aggregate from (select '1' as `row_count` from `languages` where (LOWER(`languages`.`name`) LIKE %m% count_row_table)
Tetapkan tindakan sebagai tidak dapat dicari/dipesan karena ditambahkan kolom.
Terima kasih banyak! @yajra
Ketika saya selesai dengan pengujian, saya akan mengirimkan hasilnya kepada Anda
Hasil pengujian saya:
Permintaan pertama:
select count(*) as aggregate from (select '1' as row_count from languages where languages.deleted_at is null and languages.deleted_at is null) count_row_table
-> 3.64ms
Permintaan kedua:
select languages.* from languages where languages.deleted_at is null order by code asc limit 10 offset 0
-> 1,05ms
Terima kasih @yajra sekali lagi atas bantuannya.
Senang saya bisa membantu! Terima kasih!
Saya menderita dari masalah. Render lambat. Permintaan sisi server saya.
$products = DB::connection("mysql2")->table('products')->
join('products_description', 'products.products_id', '=', 'products_description.products_id')
->select(['products.products_id', 'products_description.products_name', 'products.products_isbn13', 'products.products_distributor', 'products.products_price', 'products.products_status']);
return Datatables::of($products)->make(true);
tolong aku. Haruskah saya menulis skrip saya sendiri ke paginate? apa yang harus saya lakukan?
Saya memiliki catatan lebih dari 4.000.000 produk.
@yajra sangat menghargai jika Anda membantu saya.
Saya mendapatkan yang ini juga, mungkin permintaan yang dapat didata tidak menghubungkan param pagination ke kueri?
@pnghai bagaimana saya bisa memeriksanya?
@hsali maafkan aku. Alarm palsu. Ternyata logika saya melibatkan pengambilan gambar jarak jauh, yang menautkan ke server buntu dan memaksa setiap catatan mengambil koneksi 404, yang mengambil jumlah catatan * 60 (detik sebelum batas waktu). Saya menangguhkan logika itu dan semuanya bekerja dengan sangat baik sekarang.
Terima kasih banyak
(p/s: nick pnghai adalah akun github saya yang lain)
@pnghai bagaimana saya bisa memeriksanya?
Apakah Anda dapat menyelesaikan ini? Jika ya, bagaimana?
Bagi siapa saja yang mendapatkan pemuatan lambat, Anda mungkin memiliki semacam loop dalam fungsi pengontrol Anda yang mengulang rekaman yang diambil dengan cara tertentu.
Komentar yang paling membantu
Anda harus menghapus get to use query builder.