
Pendahuluan
Bayangin lagi ngerjain fitur sederhana, tapi kamu harus bolak-balik isi database secara manual lewat phpMyAdmin cuma buat ngetes tampilan list user. Itu melelahkan, kan? Laravel punya fitur Seeder yang sebenarnya bisa bikin hidup jauh lebih tenang daripada harus input satu per satu setiap kali database di-refresh atau di-migrate ulang.
Tips & Best Practices
- Di banyak project, biasanya saya memisahkan seeder berdasarkan entitas agar file tidak membengkak dan mudah dilacak saat ada perubahan skema database.
- Kalau project sudah mulai kompleks, saya selalu membiasakan diri menggunakan factory bersamaan dengan seeder agar data yang dihasilkan terlihat lebih natural dan mendekati data asli.
- Saat bekerja dalam tim, saya selalu menyarankan untuk mendokumentasikan seeder di dalam file DatabaseSeeder agar rekan setim tahu urutan eksekusi yang benar sebelum mulai development.
Contoh Kode
Saat butuh populate data dummy dengan cepat, kita bisa pakai seeder seperti ini:
// DatabaseSeeder.php
public function run() {
User::factory()->count(10)->create();
}Ini biasanya dipakai pas awal setup environment supaya data test udah langsung ready tanpa harus mikir input manual.
Variasi Implementasi
Kadang kita butuh data statis yang wajib ada, seperti role user (Admin, Staff). Di sini saya biasanya pakai insert() langsung karena lebih cepat ketimbang lewat model event. Tapi kalau buat testing fitur yang butuh relasi dinamis, factory adalah kawan terbaik karena dia bisa handle relationship dengan jauh lebih elegan dibanding hard-coding data.
Kesalahan Umum
- Lupa menjalankan composer dump-autoload setelah bikin file seeder baru yang bikin Laravel nggak nemu class-nya.
- Terlalu banyak menaruh logika bisnis di dalam seeder yang malah bikin waktu eksekusi jadi lambat.
- Hard-coding data sensitif langsung di seeder yang berisiko bocor ke repo publik.
- Menggunakan migrate:fresh --seed di environment production yang justru menghapus semua data asli pelanggan.
- Tidak mengelola urutan call() di DatabaseSeeder, yang akhirnya bikin error karena FK constraint dilanggar.
Ringkasan
Seeder bukan cuma soal isi data, tapi soal investasi waktu biar kita nggak terjebak sama rutinitas manual yang membosankan. Begitu kamu terbiasa pakai sistem seeder yang rapi, pindah-pindah environment atau onboarding rekan baru bakal terasa jauh lebih ringan dan minim drama database.
Komentar
Posting Komentar