Di Laravel, Anda tidak perlu membuat tabel database secara manual lewat phpMyAdmin. Ada Migration untuk mengelola struktur tabel lewat kode, dan Seeder untuk mengisi data awal. Keduanya membuat database Anda mudah dipindah dan direplikasi. Artikel ini membahas keduanya dari dasar.
Apa Itu Migration?
Migration ibarat "version control" untuk database. Struktur tabel didefinisikan dalam file, sehingga tim mana pun bisa membangun database yang sama dengan satu perintah.
Langkah 1: Membuat Migration
php artisan make:migration create_posts_table
File baru muncul di database/migrations/. Definisikan kolom di method up():
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->boolean('is_published')->default(false);
$table->timestamps();
});
}
Langkah 2: Menjalankan Migration
php artisan migrate
Perintah lain yang berguna:
php artisan migrate:rollback # batalkan migrasi terakhir
php artisan migrate:fresh # hapus semua tabel & migrasi ulang
php artisan migrate:status # lihat status migrasi
Langkah 3: Menambah Kolom ke Tabel yang Ada
Untuk mengubah tabel yang sudah ada, buat migration baru:
php artisan make:migration add_slug_to_posts_table --table=posts
public function up()
{
Schema::table('posts', function (Blueprint $table) {
$table->string('slug')->after('title');
});
}
Apa Itu Seeder?
Seeder mengisi tabel dengan data awal (data dummy untuk testing atau data master seperti kategori). Buat seeder:
php artisan make:seeder PostSeeder
Isi method run():
public function run()
{
Post::create([
'title' => 'Artikel Pertama',
'content' => 'Isi artikel...',
]);
}
Menjalankan Seeder
Daftarkan seeder di DatabaseSeeder.php, lalu jalankan:
$this->call(PostSeeder::class); // di dalam DatabaseSeeder
php artisan db:seed
php artisan migrate:fresh --seed # migrasi ulang + seed sekaligus
Bonus: Data Dummy Massal dengan Factory
Untuk membuat banyak data sekaligus, gabungkan seeder dengan factory:
Post::factory()->count(50)->create();
Kesimpulan
Migration dan Seeder membuat pengelolaan database Laravel jadi rapi, mudah dipindah, dan mudah direproduksi. Gunakan migration untuk struktur tabel, seeder untuk data awal, dan factory untuk data dummy massal. Kalau bertemu error tabel saat migrasi, lihat panduan kami tentang mengatasi error SQLSTATE Base Table Not Found.