DEV Community

Muhammad Iqbal
Muhammad Iqbal

Posted on

Database: Seeding

Database Seeding pada Laravel digunakan untuk mengisi database dengan data awal atau data dummy. Ini sangat berguna untuk pengembangan dan pengujian aplikasi, karena memungkinkan pengembang untuk dengan cepat mengisi database dengan data yang diperlukan untuk menjalankan aplikasi atau melakukan pengujian. Berikut adalah beberapa kegunaan utama dari Database Seeding pada Laravel:

A. Mengisi Database dengan Data Awal:

  • Seeder memungkinkan kamu untuk mengisi database dengan data default yang diperlukan oleh aplikasi.
   // database/seeders/DatabaseSeeder.php

   namespace Database\Seeders;

   use Illuminate\Database\Seeder;
   use App\Models\User;

   class DatabaseSeeder extends Seeder
   {
       public function run()
       {
           User::factory()->count(50)->create();
       }
   }
Enter fullscreen mode Exit fullscreen mode

B. Membuat Data Dummy untuk Pengujian:

  • Seeder memudahkan pembuatan data dummy untuk keperluan pengujian dan pengembangan fitur. Kamu bisa membuat data realistis yang diperlukan untuk memastikan fitur berjalan dengan baik.
   // database/seeders/UserSeeder.php

   namespace Database\Seeders;

   use Illuminate\Database\Seeder;
   use App\Models\User;

   class UserSeeder extends Seeder
   {
       public function run()
       {
           User::factory()->count(10)->create();
       }
   }
Enter fullscreen mode Exit fullscreen mode

C. Mengelola Data Uji yang Konsisten:

  • Seeder memungkinkan kamu untuk menjaga konsistensi data uji di berbagai lingkungan pengembangan. Ini sangat membantu dalam tim pengembangan untuk memastikan semua orang memiliki data uji yang sama.
   php artisan db:seed --class=UserSeeder
Enter fullscreen mode Exit fullscreen mode

D. Mengotomatisasi Pengisian Data:

  • Seeder dapat dijalankan sebagai bagian dari proses build atau deployment, memastikan database diisi dengan data yang diperlukan setiap kali aplikasi di-deploy.
   // Menjalankan semua seeder
   php artisan db:seed
Enter fullscreen mode Exit fullscreen mode

E. Mempermudah Pengembangan Fitur:

  • Dengan seeder, kamu bisa dengan cepat mengisi database dengan data yang diperlukan untuk mengembangkan dan menguji fitur baru tanpa harus memasukkan data secara manual.
   // Seeder untuk posts
   namespace Database\Seeders;

   use Illuminate\Database\Seeder;
   use App\Models\Post;

   class PostSeeder extends Seeder
   {
       public function run()
       {
           Post::factory()->count(20)->create();
       }
   }
Enter fullscreen mode Exit fullscreen mode

Contoh Implementasi Database Seeding

Berikut adalah contoh lengkap dari penggunaan Database Seeding pada Laravel:

A. Membuat Seeder:

   php artisan make:seeder UserSeeder
Enter fullscreen mode Exit fullscreen mode

B. Mengisi Seeder dengan Data:

   // database/seeders/UserSeeder.php

   namespace Database\Seeders;

   use Illuminate\Database\Seeder;
   use App\Models\User;

   class UserSeeder extends Seeder
   {
       public function run()
       {
           User::factory()->count(10)->create();
       }
   }
Enter fullscreen mode Exit fullscreen mode

C. Menjalankan Seeder:

   php artisan db:seed --class=UserSeeder
Enter fullscreen mode Exit fullscreen mode

D. Menambahkan Seeder ke DatabaseSeeder:

   // database/seeders/DatabaseSeeder.php

   namespace Database\Seeders;

   use Illuminate\Database\Seeder;

   class DatabaseSeeder extends Seeder
   {
       public function run()
       {
           $this->call([
               UserSeeder::class,
               PostSeeder::class,
           ]);
       }
   }
Enter fullscreen mode Exit fullscreen mode

E. Menjalankan Semua Seeder:

   php artisan db:seed
Enter fullscreen mode Exit fullscreen mode

Penggunaan dengan Model Factories

Seeder sering digunakan bersamaan dengan model factories untuk membuat data dummy dengan mudah. Berikut adalah cara menggunakannya:

A. Membuat Factory:

   php artisan make:factory UserFactory --model=User
Enter fullscreen mode Exit fullscreen mode

B. Mendefinisikan Factory:

   // database/factories/UserFactory.php

   namespace Database\Factories;

   use App\Models\User;
   use Illuminate\Database\Eloquent\Factories\Factory;
   use Illuminate\Support\Str;

   class UserFactory extends Factory
   {
       protected $model = User::class;

       public function definition()
       {
           return [
               'name' => $this->faker->name(),
               'email' => $this->faker->unique()->safeEmail(),
               'email_verified_at' => now(),
               'password' => bcrypt('password'), // password
               'remember_token' => Str::random(10),
           ];
       }
   }
Enter fullscreen mode Exit fullscreen mode

C. Menggunakan Factory dalam Seeder:

   // database/seeders/UserSeeder.php

   namespace Database\Seeders;

   use Illuminate\Database\Seeder;
   use App\Models\User;

   class UserSeeder extends Seeder
   {
       public function run()
       {
           User::factory()->count(10)->create();
       }
   }
Enter fullscreen mode Exit fullscreen mode

Kesimpulan

Database Seeding pada Laravel sangat berguna untuk mengisi database dengan data awal atau data dummy. Ini membantu pengembangan dan pengujian aplikasi dengan menyediakan data yang diperlukan secara cepat dan konsisten. Seeder memungkinkan otomatisasi pengisian data, mempermudah pengembangan fitur, dan memastikan data uji yang konsisten di berbagai lingkungan pengembangan. Dengan menggunakan seeder bersama dengan model factories, kamu bisa membuat data realistis yang diperlukan untuk pengujian dan pengembangan dengan mudah.

Top comments (0)