Membuat Data Dummy di Laravel dengan Seeder

UPDATE 12 Maret 2019: Tulisan ini diupdate menggunakan Laravel 5.8

Ketika mengembangkan aplikasi, kita butuh data dummy di masukkan ke database untuk melakukan pengujian bahwa proses aplikasi yang sedang dibangun telah berjalan dengan baik. Laravel menyertakan metode sederhana dalam melakukan hal tersebut dengan fitur Database Seeding.

Kita ambil contoh dari skema database yang telah dibuat pada tulisan sebelumnya, kita akan memasukkan data kota pada tabel cities.

Menulis Seeder

Untuk menghasilkan sebuah seeder, gunakan perintah Artisan make:seeder berikut:

php artisan make:seeder CityTableSeeder

Kelas seeder CityTableSeeder yang dihasilkan akan disimpan di direktori database/seeds. Di dalam kelas seeder terdapat metode run() yang di dalamnya dapat dimasukkan proses menambahkan data ke tabel. Buka file database/seeds/CityTableSeeder dan masukkan proses menambahkan data berikut:

public function run() {
    $cities = [
        ['name' => 'Jakarta', 'map' => 'https://goo.gl/maps/ugdFU'],
        ['name' => 'Bogor', 'map' => 'https://goo.gl/maps/ExzYT'],
        ['name' => 'Depok', 'map' => 'https://goo.gl/maps/30JxC'],
        ['name' => 'Tangerang', 'map' => 'https://goo.gl/maps/Yn0yZ'],
        ['name' => 'Bekasi', 'map' => 'https://goo.gl/maps/T17QQ']
    ];

    DB::table('cities')->insert($cities);
}

Proses penambahan data di atas menggunakan query builder yang disediakan Laravel.

Menjalankan Seeder

Laravel menyertakan kelas DatabaseSeeder yang dijalankan dengan perintah Artisan db:seed. Masukkan Kelas seeder yang ingin dijalankan dengan memanggil metode call(). Berikut isi metode run() yang berisikan kelas-kelas seeder yang dipanggil:

public function run()
{
    $this->call(CityTableSeeder::class);
}

Berikut perintah untuk menjalankan seeder:

php artisan db:seed

Selain menjalan seed yang dipanggil dari kelas DatabaseSeeder, kelas seeder tersendiri dapat dipanggil langsung dari perintah Artisan db:seed dengan menyertakan opsi –class:

php artisan db:seed --class=CityTableSeeder

Kode Github