;
Belajar Laravel dengan Mudah dan Menyenangkan
Factory di Laravel adalah alat untuk menghasilkan data uji coba secara otomatis, sering digunakan bersama seeder untuk mengisi tabel database dengan data acak atau data contoh. Jika seeder seperti "menabur" data secara manual, factory seperti mesin yang membuat data dalam jumlah besar dengan pola tertentu. Ini sangat berguna untuk menguji aplikasi dengan data realistis tanpa harus menulis setiap baris data.
Factory mendefinisikan struktur data untuk tabel tertentu (misalnya, tabel posts dengan kolom title dan content). Factory ini kemudian dipanggil dalam seeder untuk mengisi tabel dengan data. Data yang dihasilkan bisa acak (menggunakan alat seperti Faker) atau sesuai pola yang kamu tentukan, dan langsung dimasukkan ke tabel database.
Berikut langkah-langkah membuat factory untuk tabel posts (dengan kolom id, title, content, created_at, dan updated_at) dan menggunakannya dalam seeder untuk mengisi data.
Pastikan kamu sudah:
.env.posts menggunakan migration (misalnya, dengan kolom title dan content).php artisan migrate untuk membuat tabel di database.Buat Model dan Factory
Jalankan perintah berikut di terminal untuk membuat model Post sekaligus factory-nya:
php artisan make:model Post -f
Opsi -f membuat file factory di folder database/factories/PostFactory.php.
Edit File Factory
Buka file database/factories/PostFactory.php dan definisikan data yang akan dihasilkan. Contoh kode:
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use App\Models\Post;
class PostFactory extends Factory
{
protected $model = Post::class;
public function definition()
{
return [
'title' => $this->faker->sentence(5), // Kalimat acak dengan 5 kata
'content' => $this->faker->paragraph(3), // Paragraf acak dengan 3 kalimat
'created_at' => now(),
'updated_at' => now(),
];
}
}
Penjelasan:
$this->faker: Menggunakan library Faker untuk menghasilkan data acak, seperti kalimat atau paragraf.sentence(5): Membuat judul acak dengan 5 kata.paragraph(3): Membuat isi konten acak dengan 3 kalimat.created_at dan updated_at: Diisi dengan waktu saat ini menggunakan now().Buat File Seeder
Buat seeder untuk menggunakan factory. Jalankan perintah:
php artisan make:seeder PostsTableSeeder
Buka file database/seeders/PostsTableSeeder.php dan edit metode run() seperti berikut:
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\Post;
class PostsTableSeeder extends Seeder
{
public function run()
{
Post::factory()->count(10)->create();
}
}
Penjelasan:
Post::factory(): Memanggil factory untuk model Post.count(10): Menentukan bahwa 10 baris data akan dibuat.create(): Menyimpan data ke tabel posts.Jalankan Seeder
Jalankan seeder dengan perintah berikut:
php artisan db:seed --class=PostsTableSeeder
Ini akan mengisi tabel posts dengan 10 baris data acak.
Cek Hasilnya
Buka database kamu (misalnya, dengan phpMyAdmin atau TablePlus) dan periksa tabel posts. Kamu akan melihat 10 baris data dengan judul dan konten acpiper
(Opsional) Tambahkan ke DatabaseSeeder
Untuk menjalankan seeder ini bersama seeder lain, edit file database/seeders/DatabaseSeeder.php:
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run()
{
$this->call(PostsTableSeeder::class);
}
}
Lalu, jalankan semua seeder dengan:
php artisan db:seed
Setelah menjalankan seeder, tabel posts akan berisi 10 baris data, misalnya:
title: "Cara Mudah Belajar Laravel", content: "Laravel adalah framework yang sangat membantu..."title: "Membangun Aplikasi Modern", content: "Dengan fitur canggih Laravel, kamu bisa..."users atau categories.Selamat! Kamu berhasil menggunakan factory dan seeder untuk mengisi tabel database dengan data acak di Laravel!