Tutorial Bikin Seeder dengan Laravel 11 Pada Projek Toko Kopi Online

Pada artikel ini, kita akan belajar cara menggunakan fitur seeder dan faker pada Laravel 11. Fitur ini sangat bermanfaat untuk mempercepat kinerja pengembangan website, terutama ketika kita perlu membuat data dummy atau data palsu untuk keperluan pengujian. Bayangkan jika kita harus mengisi data secara manual untuk setiap tabel di proyek kita—tentu sangat memakan waktu. Dengan seeder dan faker, kita bisa membuat data dengan cepat dan efisien.

Kita akan membahas secara lengkap bagaimana cara membuat seeder dalam proyek toko kopi online yang memiliki tabel-tabel seperti categories, coffees, ingredients, dan transactions. Di dalam tutorial ini, akan dijelaskan langkah-langkah mulai dari membuat model, mengatur file migration, mengatur fillable pada model, mengatur relationship antar tabel, membuat seeder dan faker, serta menghubungkan proyek pada setting MySQL database lokal.

Apa Itu Seeder dan Faker di Laravel?

Sebelum kita masuk ke tahap teknis, mari kita pahami dulu apa itu seeder dan faker di Laravel.

  • Seeder adalah fitur di Laravel yang memungkinkan kita untuk mengisi tabel database dengan data dummy secara otomatis. Ini sangat membantu saat kita butuh banyak data untuk pengujian, tanpa perlu menginput data secara manual satu per satu.
  • Faker adalah library yang digunakan Laravel untuk menghasilkan data palsu. Dengan faker, kita bisa membuat berbagai tipe data, seperti nama, alamat, nomor telepon, tanggal, dan masih banyak lagi, dengan cepat dan otomatis.

Langkah-Langkah Membuat Seeder di Laravel 11 untuk Proyek Toko Kopi Online

Berikut adalah langkah-langkah lengkap untuk membuat seeder di proyek toko kopi online. Dalam proyek ini, kita akan bekerja dengan tabel categories, coffees, ingredients, dan transactions.

  1. Membuat Model dan Migration

Langkah pertama adalah membuat model beserta migration-nya. Di Laravel, model mewakili struktur tabel dalam database dan migration digunakan untuk mendefinisikan kolom-kolom yang akan ada di dalam tabel tersebut.

Buat model Category beserta migration dengan perintah berikut:

php artisan make:model Category -m

Perintah ini akan membuat file model di folder app/Models dan file migration di folder database/migrations. File migration ini nantinya akan digunakan untuk membuat tabel categories di database.

Lakukan hal yang sama untuk Coffees, Ingredients, dan Transactions:

php artisan make:model Coffee -m
php artisan make:model Ingredient -m
php artisan make:model Transaction -m

2. Mengatur File Migration

Setelah file migration dibuat, langkah selanjutnya adalah mendefinisikan struktur tabel di masing-masing file migration. Contohnya, untuk tabel categories, buka file migration yang baru dibuat dan edit isinya menjadi seperti ini:

public function up()
{
    Schema::create('categories', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->timestamps();
    });
}

Lakukan hal serupa untuk tabel coffees, ingredients, dan transactions. Contohnya, tabel coffees bisa memiliki struktur seperti ini:

public function up()
{
    Schema::create('coffees', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->foreignId('category_id')->constrained();
        $table->decimal('price', 8, 2);
        $table->timestamps();
    });
}

Tabel coffees memiliki hubungan dengan categories melalui category_id, yang menunjukkan bahwa setiap kopi memiliki kategori.

3. Mengatur Fillable di Model

Agar Laravel dapat melakukan mass-assignment (mengisi banyak data sekaligus), kita perlu mengatur properti fillable di model. Contoh untuk model Category:

protected $fillable = ['name'];

Untuk model Coffee:

protected $fillable = ['name', 'category_id', 'price'];

Lakukan hal yang sama untuk model Ingredient dan Transaction.

4. Mengatur Relationship Antar Tabel

Selanjutnya, kita perlu mendefinisikan relationship antar tabel di model. Contohnya, di model Category, kita dapat mendefinisikan bahwa satu kategori bisa memiliki banyak kopi:

public function coffees()
{
    return $this->hasMany(Coffee::class);
}

Di model Coffee, kita bisa mendefinisikan bahwa setiap kopi berhubungan dengan satu kategori:

public function category()
{
    return $this->belongsTo(Category::class);
}

Untuk Ingredients dan Transactions, kita bisa menggunakan relasi many-to-many jika perlu, namun untuk sekarang, kita fokus pada relasi one-to-many antara categories dan coffees.

5. Membuat Seeder dan Faker

Setelah model dan relationship diatur, saatnya membuat seeder. Seeder ini akan digunakan untuk mengisi tabel-tabel dengan data palsu. Laravel sudah menyediakan perintah untuk membuat seeder:

php artisan make:seeder CategorySeeder

Setelah itu, buka file seeder di folder database/seeders, dan gunakan faker untuk menghasilkan data palsu:

use App\\\\Models\\\\Category;
use Faker\\\\Factory as Faker;

public function run()
{
    $faker = Faker::create();

    for ($i = 1; $i <= 10; $i++) {
        Category::create([
            'name' => $faker->word,
        ]);
    }
}

Lakukan hal yang sama untuk CoffeeSeeder, IngredientSeeder, dan TransactionSeeder. Contoh untuk CoffeeSeeder:

use App\\\\Models\\\\Coffee;
use App\\\\Models\\\\Category;
use Faker\\\\Factory as Faker;

public function run()
{
    $faker = Faker::create();

    $categories = Category::all();

    foreach ($categories as $category) {
        for ($i = 1; $i <= 5; $i++) {
            Coffee::create([
                'name' => $faker->word,
                'category_id' => $category->id,
                'price' => $faker->randomFloat(2, 1, 10),
            ]);
        }
    }
}

5. Menjalankan Migration

Setelah kita selesai mengatur file migration, langkah berikutnya adalah menjalankan perintah migration untuk membuat tabel di database. Gunakan perintah berikut:

php artisan migrate

Perintah ini akan membuat semua tabel yang telah didefinisikan dalam file migration (categories, coffees, ingredients, dan transactions) di database MySQL lokal yang sudah terhubung. Pastikan konfigurasi database di file .env sudah benar agar proses migration berjalan lancar.

6. Menjalankan Seeder

Setelah semua seeder dibuat, kita bisa menjalankannya dengan perintah berikut:

php artisan db:seed --class=CategorySeeder
php artisan db:seed --class=CoffeeSeeder
php artisan db:seed --class=IngredientSeeder
php artisan db:seed --class=TransactionSeeder

Ini akan mengisi tabel categories, coffees, ingredients, dan transactions dengan data palsu.

7. Menghubungkan Proyek ke Database MySQL Lokal

Agar seeder dapat berjalan, pastikan kita sudah menghubungkan proyek Laravel ke database MySQL lokal. Buka file .env dan atur konfigurasi database seperti berikut:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=toko_kopi
DB_USERNAME=root
DB_PASSWORD=

Pastikan juga MySQL sudah berjalan di komputer lokal.

Penutup

Laravel terus berkembang menjadi salah satu framework web development yang paling populer di dunia karena berbagai update menarik yang dirilis secara berkala. Setiap pembaruan membawa fitur-fitur baru yang tidak hanya memudahkan para developer, tetapi juga mempercepat proses pengembangan aplikasi. Dari fitur keamanan yang semakin baik hingga peningkatan kinerja dan dokumentasi yang komprehensif, Laravel terus menjaga reputasinya sebagai framework yang aman, fleksibel, dan mudah dipelajari.

Dengan kemudahan dan fleksibilitas yang ditawarkan, Laravel memungkinkan developer untuk membangun aplikasi skala kecil hingga besar dengan lebih cepat dan efisien. Selain itu, Laravel terus mendukung para developer dengan tools dan paket-paket yang terus diperbarui, sehingga memudahkan untuk menangani berbagai kebutuhan proyek, dari pengelolaan database, otentikasi, hingga pengembangan API.

Bagi Anda yang ingin terus memperdalam ilmu Laravel atau bahkan belajar framework ini dari nol, Buildwithangga adalah tempat yang tepat. Mereka secara rutin menghadirkan kelas-kelas gratis dengan studi kasus nyata yang dapat langsung diterapkan dalam proyek Anda. Studi kasus ini membantu Anda memahami cara mengimplementasikan Laravel dalam skenario kehidupan nyata, sehingga Anda lebih siap dalam menghadapi tantangan proyek web development sesungguhnya.

Selain itu, Buildwithangga juga menawarkan akses kelas seumur hidup yang memberikan Anda kebebasan untuk belajar kapan saja tanpa batasan waktu. Anda juga dapat belajar dari mentor berpengalaman yang siap membimbing dan menjawab pertanyaan Anda di sepanjang proses belajar. Dengan adanya fitur diskusi kelompok, Anda juga bisa bertukar pikiran dengan sesama pelajar, meningkatkan pemahaman Anda tentang topik yang sedang dipelajari.

Pantau terus website Buildwithangga untuk tidak ketinggalan update kelas terbaru dan kesempatan belajar gratis yang bisa membantu meningkatkan skill Anda sebagai developer Laravel. Ini adalah langkah tepat untuk mengembangkan karir Anda di bidang web development dan menjadi lebih siap menghadapi berbagai proyek teknologi yang lebih kompleks di masa depan.