Import Excel Laravel - Hallo semuanya, setelah sebelumnya kita belajar cara export data ke excel dari mysql, sekarang kita akan coba melakukan sebaliknya yaitu import data ke mysql melalui file excel Show Fitur ini terkadang dibutuhkan oleh klien ketika mereka baru saja melakukan migrasi sistem dan ingin mentransfer data lama ke sistem baru Biasanya digunakan untuk memasukkan berbagai jenis data master seperti data karyawan, pemasok, atau pelanggan yang jumlahnya bisa mencapai ribuan Kemudian karena tidak mungkin mereka transfer dengan menginput ulang datanya satu per satu, diperlukan modul importir seperti ini dengan ketentuan template excel yang sudah disediakan. Oke langsung saja kita mulai latihannya. Ada beberapa hal yang perlu kita persiapkan, jadi mari kita mulai persiapannya terlebih dahulu
Langkah pertama yang perlu Anda lakukan adalah
Dalam hal ini versi laravel yang saya gunakan adalah versi 8, untuk cara instalasinya bisa mengikuti panduan pada halaman resminya disini Sedang tren Tutorial Lengkap Integrasi Laravel Dengan Payment Gateway Xendit
Untuk package kita masih menggunakan package yang sama seperti pada tutorial sebelumnya yaitu MaatWebsite Laravel/Excel versi 3 Untuk cara pemasangannya bisa dilihat di tutorial (How to Export Excel Laravel)
Setelah instalasi laravel dan package selesai, sekarang anda buat databasenya terlebih dahulu, untuk nama databasenya anda bisa melakukan apa saja sesuai dengan keinginan anda Setelah itu, silahkan hubungkan database dengan proyek Laravel Anda melalui sebuah file. env, seperti pada gambar berikut Untuk username dan password silahkan sesuaikan sendiri dengan akun mysql anda sendiri. Jika tidak ada kata sandi, kosongkan saja kolom DB_PASSWORD
Setelah database terhubung, sekarang kita coba membuat tabel siswa terlebih dahulu Kenapa harus mahasiswa? Kami membuat tabel melalui migrasi, pada saat yang sama kami juga membuat model untuk mewakili tabel, silakan di CMD/Terminal Anda menjalankan perintah sebagai berikut php artisan make:model Siswa -m Perintah tersebut akan membuat 1 file Model dan 1 file Migrasi ../app/Models/Siswa.php ../database/migrations/2021_08_27_135345_create_siswas_table.php_ Modifikasi file model Student sebagai berikut dengan menambahkan 2 properti yaitu properti guarded dan timestamps <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Siswa extends Model { use HasFactory; protected $guarded = []; public $timestamps = false; } dilindungi $dijaga = []; publik $timestamps = false; Dalam file migrasi, Anda mengisi yang berikut ini public function up() { Schema::create('siswas', function (Blueprint $table) { $table->id(); $table->string('nama')->nullable(); $table->string('no_hp')->nullable(); $table->string('email')->nullable(); $table->text('alamat'); }); } Kemudian jalankan perintah php artisan migrate_ Setelah itu, akan ada beberapa file dan tabel yang sudah dimigrasikan, salah satunya adalah tabel graduate Jika Anda memeriksa di database, maka tabel siswa harus dibentuk dengan struktur sebagai berikut
Nah, setelah semua persiapan selesai, kita akan membuat modul daftar siswa terlebih dahulu Silakan buat rute baru terlebih dahulu di file web. php, lalu tambahkan rute baru sebagai berikut ../routes/web.php .... use App\Http\Controllers\SiswaController; .... Route::get('siswa/list', [SiswaController::class, 'index']); Rute di atas memiliki spesifikasi sebagai berikut
Sekarang Anda membuat SiswaController dengan menjalankan perintah php artisan make:controller SiswaController Nanti posisi dari file SiswaController ada di. /app/Http/Controllers/StudentController. php Buka saja dan tambahkan fungsi indeks sebagai berikut <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Siswa; class SiswaController extends Controller { public function index() { $data = Siswa::all(); return view('siswa.index', compact('data')); } }_ Coba lihat script di atas
Sekarang kita buat tampilan filenya, kita taruh di folder ../resources/views/siswa/index.blade.php_ Dan coba isi sebagai berikut ../app/Models/Siswa.php ../database/migrations/2021_08_27_135345_create_siswas_table.php_0 Sekarang jika Anda mengakses url ../app/Models/Siswa.php ../database/migrations/2021_08_27_135345_create_siswas_table.php_1 Sehingga akan muncul sebagai berikut Jika Anda mengaksesnya, halaman tersebut tidak memiliki konten apa pun, hanya headernya saja, karena databasenya masih kosong Nanti kita isi datanya via excel import
Nah sekarang kita akan mulai untuk modul importnya, nanti akan saya jelaskan dengan berbagai cara, kita mulai dari dasar dulu Namun sebelumnya pada halaman daftar siswa, Anda terlebih dahulu menambahkan tombol untuk proses impor data,
Hal pertama yang perlu kita lakukan adalah membuat format excel terlebih dahulu, silahkan lakukan seperti pada gambar di bawah ini
Untuk header silahkan sesuaikan seperti pada gambar diatas (nama, no_hp, email, alamat). tapi kalo buat body silahkan custom sendiri, data bebas mau apa aja Kemudian selanjutnya kita tambahkan form untuk upload file excel pada halaman daftar siswa, anda buka file view index dan ubah seperti berikut ../app/Models/Siswa.php ../database/migrations/2021_08_27_135345_create_siswas_table.php2 ../app/Models/Siswa.php ../database/migrations/2021_08_27_135345_create_siswas_table.php3 Dalam tampilan, kami menambahkan formulir di atas tabel daftar siswa
Form mengarah ke url "/siswa/import" dan menggunakan metode POST, yang nantinya akan kita buat rutenya di file web. php Untuk jenis inputnya yaitu file type, dan namanya juga file Jika Anda me-refresh halaman daftar siswa, akan muncul sebagai berikut Sekarang kami membuat rute baru untuk menangani proses impor data, di file web. php silakan tambahkan sebagai berikut ../app/Models/Siswa.php ../database/migrations/2021_08_27_135345_create_siswas_table.php_4 Rute tersebut memiliki spesifikasi sebagai berikut
Kemudian untuk dapat mengimport data, kita perlu membuat file di dalam folder ". /aplikasi/Impor”. Nanti di dalam folder tersebut kita akan menempatkan berbagai class untuk proses import data Kita bisa membuatnya dengan menjalankan perintah berikut ../app/Models/Siswa.php ../database/migrations/2021_08_27_135345_create_siswas_table.php_5 Nah, perintah tersebut akan membuat file impor baru yang ada di dalam folder tersebut ../app/Models/Siswa.php ../database/migrations/2021_08_27_135345_create_siswas_table.php_6 Cukup buka file SiswasImport, dan ubah sebagai berikut ../app/Models/Siswa.php ../database/migrations/2021_08_27_135345_create_siswas_table.php_7
Sekarang buka file SiswaController, dan tambahkan fungsi import_excel sebagai berikut ../app/Models/Siswa.php ../database/migrations/2021_08_27_135345_create_siswas_table.php8 ../app/Models/Siswa.php ../database/migrations/2021_08_27_135345_create_siswas_table.php9
Nah setelah itu, sekarang coba anda jalankan importernya, pada halaman daftar siswa anda pilih file excelnya, lalu klik tombol import Jika berhasil, maka kita akan diarahkan kembali ke halaman daftar siswa, dan akan muncul data yang baru saja kita impor
Terkadang di file excel kita, posisi header tidak selalu berada di baris ke-1, terkadang di baris ke-2 atau ke-3 Jika Anda menemukan kondisi tersebut, maka Anda perlu melakukan beberapa modifikasi pada file SiswasImport <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Siswa extends Model { use HasFactory; protected $guarded = []; public $timestamps = false; }0 Yang harus Anda lakukan adalah menambahkan fungsi headingRow dan kembali dengan angka yang mewakili posisi baris dari posisi headernya
Terkadang kita ingin membatasi jumlah data yang masuk ke database Katakanlah misalnya, kita memiliki ribuan data di file excel, tetapi kita hanya ingin mengimpor 100 data Untuk dapat melakukannya, kita dapat mengimplementasikan Class WithBatchInserts pada file SiswasImport seperti berikut <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Siswa extends Model { use HasFactory; protected $guarded = []; public $timestamps = false; }1
Ketika kita membaca sebuah file excel dengan ukuran yang sangat besar yang mungkin memiliki 1 juta baris data, pasti akan berdampak pada penggunaan memori server yang berlebihan. Bahkan jika server tidak mampu menanganinya, error 500 Server TimeOut akan muncul Untuk mengatasinya, Anda bisa menggunakan metode Chunk Reading Chunk ini akan membagi data yang besar menjadi beberapa bagian, misalkan kita memiliki 10 ribu data, maka kita membaginya menjadi 10 bagian yang masing-masing bagian memiliki 1 ribu data Sehingga dengan begitu, sistem tidak akan langsung mendapatkan 10 ribu data, melainkan hanya mendapatkan data sebanyak 10 kali saja Untuk cara menggunakannya, Anda perlu memodifikasi fie SiswasImport sebagai berikut <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Siswa extends Model { use HasFactory; protected $guarded = []; public $timestamps = false; }2
Terima kasih telah mengikuti seri tutorial Import Excel Laravel lengkap Semoga bermanfaat. dan jika anda merasa ada kesulitan silahkan berkomentar pada kolom di bawah ini Terima kasih
Jika artikel ini bermanfaat bagi Anda, membantu menyelesaikan masalah yang Anda hadapi, Anda juga dapat mendukung kami dengan mengunjungi halaman berikut. https. //saweria. co/sangcahayaid |