PHP Artisan DB Seed Laravel – Cara Mengisi Data Database Otomatis
Kalau kamu sudah pakai php artisan migrate untuk membuat struktur tabel, langkah berikutnya yang tidak kalah penting adalah:
php artisan db:seed
Tanpa seeder, kamu akan capek input data manual setiap kali:
Install ulang project
Pindah server
Testing fitur
Development tim
Dengan PHP Artisan DB Seed Laravel, semua data awal bisa dibuat otomatis.
Apa Itu DB Seed di Laravel?
DB Seed adalah fitur Laravel untuk mengisi database dengan data dummy atau data awal menggunakan kode PHP.
Biasanya dipakai untuk:
Data admin
Data user default
Data master (role, kategori, jurusan, dll)
Data testing
Seeder ini berjalan setelah migration.
Cara Membuat Seeder di Laravel
Jalankan perintah:
php artisan make:seeder UserSeeder
jika perintah sukses, akan muncul komentar "Seeder created successfully." pada terminal tempat menjalankan perintah pembuatan seeder.
Laravel akan membuat file di:
database/seeders/UserSeeder.php
Isinya seperti ini:
<?php
use Illuminate\Database\Seeder;
class UserSeeder extends Seeder{ /** * Run the database seeds. * * @return void */ public function run() { DB::table('users')->insert([ 'name' => 'Admin', 'email' => 'admin@mail.com', 'password' => bcrypt('123456'), ]); }}
Ini akan membuat satu user admin otomatis.
Menjalankan PHP Artisan DB Seed
Untuk menjalankan semua seeder:
php artisan db:seed
Kalau mau jalankan seeder tertentu:
php artisan db:seed --class=UserSeeder
Ini sangat berguna kalau project besar dan banyak seeder. Berikut ini adalah hasil setelah menjalankan seeder class UserSeeder
Menggabungkan Seeder dengan Migration
Biasanya developer pakai:
php artisan migrate --seed
Atau saat reset database:
php artisan migrate:fresh --seed
Ini akan:
Hapus semua tabel
Buat ulang
Isi data otomatis
Sangat cocok untuk testing dan development.
Menggunakan Factory untuk Data Banyak
Kalau mau generate data banyak:
php artisan make:factory UserFactory
Di factory:
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\User;use Faker\Generator as Faker;use Illuminate\Support\Str;
/*|--------------------------------------------------------------------------| Model Factories|--------------------------------------------------------------------------|| This directory should contain each of the model factory definitions for| your application. Factories provide a convenient way to generate new| model instances for testing / seeding your application's database.|*/
$factory->define(User::class, function (Faker $faker) { return [ 'name' => $faker->name, 'email' => $faker->unique()->safeEmail, 'email_verified_at' => now(), 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'remember_token' => Str::random(10), ];});Di file DatabaseSeeder:
kemudian jalankan
php artisan db:seed
Ini bisa bikin 50 data user dalam 1 detik.
Kesalahan Umum Saat DB Seed
1. Data tidak masuk
Biasanya lupa memanggil seeder di DatabaseSeeder.php.
$this->call(UserSeeder::class);
2. Duplicate data
Seeder dijalankan berkali-kali tanpa truncate.
Solusi:
DB::table('users')->truncate();Kenapa DB Seed Penting di Laravel?
Karena tanpa seeder:
Testing lama
Data beda-beda
Deploy rawan error
Dengan php artisan db:seed:
Semua tim punya data sama
Server baru siap dalam hitungan menit
Tidak perlu input manual
Penutup
Kalau kamu sudah pakai:
Maka kamu sudah pakai workflow Laravel profesional.
No comments:
Post a Comment