Cara Seeding Dengan Faker Di Laravel

Seeding adalah fitur laravel yang berfungsi untuk mengisi data dummy pada database secara cepat bahkan dalam jumlah banyak.
Dengan fitur ini kita juga bisa menginput data hingga ribuan atau lebih jika ingin melakukan tes performa database saat menggunakan banyak data.
Selain itu fitur ini juga berguna jika kita berbagi file project. dimana file project yang harus dibagi memerlukan data default untuk menjalankannya.
Sedangkan Faker adalah library yang kita butuhkan saat kita ingin menginput data seeding secara random.
Faker memiliki fitur dasar untuk mengenerate data. Mulai dari nama, gender, tanggal, Random Element berdasrakan element array. Untuk lebih lengkapnya silahkan kunjungi laman FakerPHP / Faker
Untuk cara penggunannya adalah sebagai berikut :
Langkah pertama adalah membuat file seeder. Caranya jalankan perintah ini di terminal :
php artisan make:seeder CustomerSeederJika ingin membuat file seeder di subfolder misal folder pelanggan. maka jalankan perintah dibawah ini :
php artisan make:seeder pelanggan/CustomerSeederperintah diatas akan menghasilkan output berupa file seeder yang terletak di database/seeders dengan nama file CustomerSeeder.php
Selanjutnya untuk pengisian data adalah seperti constoh dibawah ini :
public function run(): void
{
DB::table('customers')->insert([
'nama' => "Ahmad",
'alamat' => "Jakarta"
]);
DB::table('customers')->insert([
'nama' => "Yusuf",
'alamat' => "Surabaya"
]);
DB::table('customers')->insert([
'nama' => "Sulaiman",
'alamat' => "Malang"
]);
}Code di atas adalah contoh untuk melakukan tiga input data customer. Jika ingin memasukkan banyak data misal 100 data. Kita bisa menggunakan Looping. Namun hal ini akan muncul problem baru yaitu kita harus menyiapkan 100 nama yang berbeda dengan alamat yang berbeda pula. dan ini cukup merepotkan.
Nah...Inilah saat yang tepat untuk menggunakan Library Faker. yang bisa mengenerate nama dan alamat berbeda dalah jumlah banyak. Contoh penggunaanya adalah :
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Faker\Factory as Faker;
use Illuminate\Support\Facades\DB;
class CustomerSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
$faker = Faker::create('id_ID');
for($i = 1; $i <= 100; $i++){
DB::table('customers')->insert([
'nama' => $faker->name(),
'alamat' => $faker->address()
]);
}
}
}Dimana pada code diatas faker akan mengenerate 100 baris pada tabel customer dengan nama dan alamat yang berbeda-beda
Selanjutnya lakukan hal yang sama untuk entitas tabel yang lain.
Jika sudah , maka selanjutnya buka file DatabaseSeeder.php yang terletak di folder database/seeders. dan lakukan registrasi setiap file seeder yang akan dilakukan seeding, seperti dibawah ini :
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
$this->call([
UserSeeder::class,
CustomerSeeder::class,
]);
}
}Pada contoh kode diatas sistem akan melakukan seeding pada 2 file yaitu UserSeeder & CustomerSeeder.
Selanjutnya jalankan perintah seeding pada terminal seperti di bawah ini :
php artisan db:seedDengan perintah di atas maka sistem akan melakukan seeding pada seluruh file seeder yang teregistrasi pada file DatabaseSeeder.php .
Lalu bagaimana jika ingin melakukan seeding pada 1 file saja ? Maka jalankan perintah seperti dibawah ini :
php artisan db:seed --class=CustomerSeederBagaimana jika ingin melakukan seeding pada banyak file seeder kecuali beberapa file saja ? maka berikan comment pada seeder yang tidak ingin dilakukan seeding pada file DatabaseSeeder.php contoh seperti di bawah ini :
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
$this->call([
//UserSeeder::class,
CustomerSeeder::class,
TransaksiSeeder::class,
BarangSeeder::class,
]);
}
}Pada contoh code diatas sistem akan melakukan seeding pada seluruh file kecuali UserSeeder.
Jika tidak ada kendala maka data pada tabel akan bertambah atau terisi data baru hasil dari proses seeding
Tambahan
Pada Libarary Faker terdapat fitur menarik. misal kita ingin faker men-generate suatu data berdasar pilihan yang kita berikan. misal pada alamat customer hanya ingin terinput data salah satu dari kota Jakarta, Surabaya dan malang. maka contoh kodenya adalah :
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Faker\Factory as Faker;
use Illuminate\Support\Facades\DB;
class CustomerSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
$faker = Faker::create('id_ID');
for($i = 1; $i <= 100; $i++){
DB::table('customers')->insert([
'nama' => $faker->name(),
'alamat' => $faker->randomElement(['Jakarta', 'Surabaya', 'Malang']),
]);
}
}
}yap nama function adalah randomElement() . Untuk lebih lengkapnya silahkan pelajari di Numbers and Strings - FakerPHP / Faker
Semoga Bermanfaat dan Terima Kasih....
Sumber :