Pernah nggak kamu baru selesai setup migration laravel, terus bingung harus isi tabel database dari mana? Kalau kamu langsung input data satu-satu lewat phpMyAdmin atau form, jujur deh — itu melelahkan banget dan buang waktu. Nah, di sinilah Seeder dan Factory hadir jadi penyelamat hidupmu sebagai developer.
Di artikel ke-12 dari seri 50 Artikel Belajar Laravel ini, kita bakal kupas tuntas cara kerja Seeder dan Factory di Laravel — dari konsep dasar sampai praktik langsung. Siap ngisi database ribuan baris data hanya dengan satu perintah di terminal? Yuk mulai!
"Seeder adalah skrip untuk mengisi database, Factory adalah cetakan data palsunya."
Keduanya bekerja sama: Factory mendefinisikan bentuk data palsu, Seeder menentukan berapa banyak dan kapan data itu dibuat. Dalam ekosistem migration laravel, keduanya adalah pasangan yang sempurna untuk kebutuhan development dan testing.
🌱 Apa Itu Seeder di Laravel? (Analogi Dunia Nyata)
Bayangkan kamu baru beli akuarium baru (anggap aja itu database kamu yang baru di-migration laravel-kan). Akuariumnya masih kosong, nggak ada ikan, nggak ada tanaman. Kamu perlu "menyemai" isi akuarium itu supaya terlihat hidup dan bisa diuji coba. Nah, Seeder di Laravel itu ibarat proses menyemai tadi — dia yang ngisi database dengan data awal yang kamu definisikan sendiri.
Seeder biasanya dipakai untuk dua skenario utama: data awal yang wajib ada (seperti data admin, kategori produk, atau konfigurasi sistem) dan data dummy untuk testing (ratusan user palsu, ribuan transaksi simulasi, dll.).
Kapan pakai Seeder? Gunakan Seeder untuk data yang selalu harus ada di database kamu — misalnya akun admin default, daftar provinsi, atau role pengguna. Jangan simpan logika bisnis di dalam Seeder ya!
Cara Membuat dan Menjalankan Seeder
Jalankan perintah berikut di terminal kamu. Nama file Seeder biasanya mengikuti nama tabel atau model yang ingin diisi.
database/seeders/UserSeeder.phpTulis logika pengisian data di dalam method run().
DatabaseSeeder.php dan jalankanPerintah php artisan migrate:fresh --seed adalah favorit para developer Laravel! Perintah ini sekaligus menghapus semua tabel, menjalankan ulang semua migration, dan mengisi data dari Seeder — satu perintah untuk clean slate total. Tapi hati-hati: jangan jalankan di production! 🚨
🏭 Factory: Mesin Pembuat Data Palsu Otomatis
Kalau Seeder itu seperti tukang yang mengisi akuarium, maka Factory adalah mesin cetaknya. Factory mendefinisikan blueprint (cetak biru) dari sebuah data — mulai dari tipe, format, sampai nilai randomnya — menggunakan library bernama Faker.
Bayangkan kamu punya pabrik roti: kamu tentukan resepnya sekali (Factory), terus mesin bisa bikin ribuan roti sesuai resep itu secara otomatis. Dalam konteks migration laravel, Factory adalah solusi paling elegan untuk generate data testing yang realistis.
Cara Membuat dan Menggunakan Factory
Di sinilah keajaibannya! Kamu bisa bikin 50, 100, atau bahkan 10.000 user palsu hanya dengan satu baris kode.
Laravel secara otomatis menghubungkan Factory ke Model jika kamu menggunakan trait HasFactory di dalam model. Pastikan model User kamu memiliki baris use HasFactory; di dalamnya — biasanya sudah ada secara default di instalasi Laravel baru.
📊 Perbandingan: Seeder vs Factory vs Migration Laravel
Banyak pemula yang bingung membedakan ketiga konsep ini. Padahal ketiganya punya peran yang berbeda tapi saling melengkapi dalam ekosistem migration laravel. Tabel berikut akan membantumu memahaminya sekaligus:
| Fitur | Migration | Seeder | Factory |
|---|---|---|---|
| Tujuan Utama | Membuat/ubah struktur tabel | Mengisi data ke tabel | Mendefinisikan blueprint data palsu |
| Lokasi File | database/migrations/ |
database/seeders/ |
database/factories/ |
| Perintah Artisan | php artisan migrate |
php artisan db:seed |
Dipanggil via Seeder |
| Menggunakan Faker? | ❌ Tidak | ⚠️ Bisa, tapi tidak ideal | ✅ Ya, ini tugas utamanya |
| Dipakai di Production? | ✅ Ya (untuk struktur) | ⚠️ Hanya data awal wajib | ❌ Tidak (hanya development) |
Kenapa Factory Lebih Baik daripada Hard-code Data di Seeder?
Kamu bisa saja tulis data manual di Seeder, tapi bayangkan kalau kamu perlu 500 user — kamu mau nulis 500 array satu per satu? 😅
Factory dengan Faker memungkinkan kamu generate data yang realistis (nama asli, email valid, nomor telepon berformat benar), unik (tidak ada duplikat), dan scalable (dari 1 sampai jutaan record dengan kode yang sama). Ini adalah praktik terbaik yang dipakai developer profesional di seluruh dunia.
🎲 Cheat Sheet: Faker di Laravel Factory
Library Faker (sekarang bernama FakerPHP/Faker) sudah termasuk dalam instalasi Laravel. Ini adalah beberapa method yang paling sering dipakai saat membuat Factory di proyek migration laravel-mu:
Jika kamu ingin data Faker dalam Bahasa Indonesia (nama, kota, dll. yang lebih lokal), tambahkan konfigurasi locale di file config/app.php: cari 'faker_locale' dan ubah nilainya menjadi 'id_ID'. Voila! Data langsung jadi lebih Indonesia. 🇮🇩
📚 Ini adalah bagian dari Seri 50 Artikel Belajar Laravel Lengkap. Lihat semua artikel →
No comments:
Post a Comment