Seeder: Mengisi Database Laravel dengan Data Sampel

Tahukah kamu? Dalam Framework Laravel kamu dapat membuat data sampel yang dapat digunakan untuk pengujian aplikasi. Seeder merupakan sebuah class dalam Framework Laravel yang memungkinkan kita sebagai web developer untuk mengisi database kita dengan data sampel atau dummy data yang telah ditentukan secara otomatis. Dengan menggunakan Seeder, kita dapat memasukkan data sampel dalam jumlah yang banyak sekaligus ke dalam database menggunakan Model Factories tanpa perlu menambahkannya satu per satu kedalam database. Kita hanya perlu menuliskan kode sekali dan Seeder akan memasukkan data tersebut ke dalam database kita secara otomatis.

Manfaat Seeder dalam Laravel

  • Konsistensi dalam Pengujian: Dengan menyediakan data sampel yang telah ditentukan, pengembang dapat memastikan bahwa setiap kali pengujian dilakukan, aplikasi akan menggunakan dataset yang sama. Hal ini membantu dalam pengujian yang konsisten dan efisien.
  • Efisiensi tahap Pengembangan: Sebagai alternatif dari memasukkan data secara manual setiap kali membangun atau mereset database, seeder memungkinkan pengembang untuk mengisi data sampel yang diperlukan dalam hitungan detik. Ini menghemat waktu dan energi pengembang, mempercepat siklus pengembangan aplikasi secara keseluruhan.
  • Simulasi Lingkungan Produksi: Seeder memungkinkan pengembang untuk mensimulasikan lingkungan produksi secara lokal atau di lingkungan pengembangan. Dengan menggunakan seeder, pengembang dapat membuat salinan data produksi yang realistis untuk digunakan dalam pengujian di lingkungan pengembangan. Ini membantu dalam mengidentifikasi dan memperbaiki masalah sebelum rilis ke lingkungan produksi.
  • Pengujian Fungsionalitas: Data yang diisi oleh seeder dapat digunakan untuk menguji fungsionalitas aplikasi dalam berbagai skenario. Pengembang dapat membuat dataset yang mencakup kasus penggunaan yang berbeda untuk menguji respons aplikasi terhadap berbagai situasi. Hal ini memastikan aplikasi berfungsi seperti yang diharapkan dalam semua kondisi.
  • Pemeliharaan dan Pengembangan Lanjutan: Dengan menggunakan seeder, pemeliharaan dan pengembangan lanjutan aplikasi menjadi lebih mudah. Pengembang dapat dengan cepat mengisi data sampel yang diperlukan untuk menguji atau mengembangkan fitur baru tanpa harus mengganggu data yang sudah ada dalam database. Ini memfasilitasi pengembangan iteratif dan fleksibel.

Implementasi Seeder dalam Laravel

Secara default, Laravel menempatkan file seed yang kita buat pada direktori database/seeds. Kita dapat membuat seeder dengan menggunakan perintah artisan. Misalnya, untuk membuat seeder untuk tabel products, kita jalankan perintah berikut:

php artisan make:seeder ProductSeeder
SeederMengisiDatabaseLaravel_BuildWithAngga

Misalkan kita memiliki model Product yang memiliki struktur sebagai berikut:

<?php

namespace App\\Models;

use Illuminate\\Database\\Eloquent\\Model;

class Product extends Model
{
    protected $fillable = [
        'name', 'description', 'price',
    ];
}

Selanjutnya, kita dapat membuat sebuah seeder untuk mengisi beberapa data produk ke dalam tabel products.

<?php

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

class ProductSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        // Menyisipkan data produk ke dalam tabel products
        Product::create([
            'name' => 'Laptop',
            'description' => 'Powerful laptop for all your needs',
            'price' => 1200,
        ]);

        Product::create([
            'name' => 'Smartphone',
            'description' => 'Latest smartphone with great features',
            'price' => 800,
        ]);

        Product::create([
            'name' => 'Headphones',
            'description' => 'High-quality headphones for immersive sound experience',
            'price' => 100,
        ]);
    }
}

Pertama-tama kita dapat mendefinisikan sebuah seeder dengan membuat kelas ProductSeeder yang meng-extends Seeder. Dalam file seed yang kita buat dalam method run() kita dapat menuliskan kode untuk mengisi data yang kita butuhkan ke dalam database. Di dalamnya kita dapat menggunakan method create() pada model Product untuk membuat data baru dalam database. Kita membuat beberapa produk dengan menggunakan method create(), dan masing-masing produk memiliki atribut name, description, dan price.

Untuk menjalankan seeder yang sudah kita buat, Kita dapat menggunakan perintah artisan Laravel seperti contoh dibawah:

php artisan db:seed --class=ProductSeeder

Di dalam method run(), kita dapat memasukkan dummy data ke dalam database menggunakan Query Builder atau Eloquent. Dengan menjalankan perintah di atas, data produk akan dimasukkan ke dalam tabel products dalam database. Seeder sangat berguna dalam membuat data sampel atau data uji untuk pengembangan aplikasi.

Kesimpulan

Seeder dalam Laravel memberikan kemudahan bagi kita sebagai pengembang untuk mengisi data sampel ke dalam database dengan cepat dan efisien. Dengan seeder juga, kita dapat memastikan konsistensi dalam pengujian aplikasi dengan menyediakan dataset yang sama setiap kali pengujian dilakukan. Selain itu, penggunaan seeder juga mempercepat proses pengembangan dengan menghemat waktu dan energi yang seharusnya digunakan untuk memasukkan data secara manual. Dengan Seeder memungkinkan kita dapat melakukan simulasi lingkungan produksi dengan menyediakan salinan data produksi yang realistis untuk pengujian di lingkungan pengembangan, membantu dalam mengidentifikasi dan memperbaiki masalah sebelum rilis ke lingkungan produksi. Dengan demikian, seeder adalah salah satu fitur kunci dalam Laravel yang membantu pengembang dalam mengelola dan menguji aplikasi secara efisien, serta memfasilitasi pengembangan yang lebih cepat dan lebih lancar.

Jika kamu tertarik untuk explorasi atau mempelajari hal lain, Kamu bisa mengikuti kelas di Build With Angga untuk meningkatkan pengetahuan kamu mendalami Eloquent dalam Laravel dengan mengikuti rekomendasi kelas berikut:
Kelas Online Laravel: Migration, Seeder, and Factory | BuildWithAngga
Kelas Online Eloquent ORM Laravel | BuildWithAngga
Kelas Online Full-Stack Web Developer: Bangun Website Freelancer | BuildWithAngga