Seeding pada laravel adalah sebuah fitur untuk mengisi data pada database dengan data sembarang atau data testing. Seeding merupakan fitur pada laravel untuk mengisi data test pada record tabel. Analoginya seperti ini, terkadang kita ingin mengisi data sembarang sebanyak 100 data untuk menampilkan data tersebut ke dalam halaman kita, tentu jika kita mengisinya secara manual maka akan sangat memakan waktu dan tidak efisien, maka fitur seeding adalah solusinya.
Sedangkan faker adalah library untuk membuat data palsu atau data testing. Faker mampu menggenerate ratusan bahkan ribuan data secara acak.
Seeding pada Laravel dan Cara Penggunaannya
Untuk menggunakan fitur seeding ini, kita bisa membuat class seedernya dulu dengan perintah php artisan. Disini kita masih menggunakan project latihan_laravel yang sudah kita buat pada tutorial sebelumnya dan kita menggunakan database datasekolah dan tabel siswa yang sudah kita buat pada tutorial https://agussuratna.net/2021/04/16/tutorial-laravel-8-migration-laravel/.
Jika belum dibuat, silahkan buat dahulu database datasekolah dan tabel siswa, sesuaikan seperti pada contoh di atas. Karena di sini kita akan membuat penginputan data testing ke table siswa dengan menggunakan seeder dari laravel.
Selanjutnya kita mulai membuat seedingnya, buka terminal atau CMD masuk ke direktori project latihan_laravel nya, kemudian ketik perintah berikut :
php artisan make:seeder SiswaSeeder
Maka akan dibuat sebuah file seeder SiswaSeeder.php secara otomatis, letaknya ada di latihan_laravel/database/seeders/SiswaSeeder.php.
Kemudian buka file SiswaSeeder.php tersebut, di file SiswaSeeder.php tersebut sudah otomatis diisi dengan class SiswaSeeder yang meng-extends class Seeder dari laravel.
latihan_laravel/database/seeders/SiswaSeeder.php
<?php namespace Database\Seeders; use Illuminate\Database\Seeder; class SiswaSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { // isi perintah di sini } }
Perintah untuk menginput data ke table siswa bisa kita tulis dalam method run() tersebut, ketik syntax berikut dalam method rund() :
<?php namespace Database\Seeders; use Illuminate\Database\Seeder; class SiswaSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { // insert data ke table siswa \DB::table('siswa')->insert([ 'nis' => 2021001, 'nama' => 'Ahmad', 'kelas' => 'X RPL A', 'alamat' => 'Jl. Maharmartanegara', 'hp' => '0813952233' ]); } }
Pada method run tersebut kita memerintahkan untuk menginput data testing siswa dengan nis 2021001, nama Ahmad, kelas X RPL A, alamat Jl. Maharmartanegara dan hpnya 081395223344 ke dalam table siswa.
Cara menjalankan fungsi/method run() untuk menginput data testing ini kita bisa menggunakan perintah php artisan berikut :
php artisan db:seed --class=SiswaSeeder
Maka data Ahmad tadi yang kita buat sebagai data testing akan tersimpan ke tabel siswa.
Tadi kita menggunakan perintah seeder dengan membuat detail bahwa data seeder yang ingin kita jalankan adalah class atau file SiswaSeeder.php.
Jika kita menggunakan perintah seperti berikut, maka semua file seeder akan dijalankan.
php artisan db:seed
Sampai di sini kita bisa pahami maksud dan kegunaan fitur seeding pada laravel salah satunya untuk membuat data testing di database dengan mudah, tanpa perlu menginput data secara menual ke database dan cara ini bisa lebih efektif lagi jika misalnya kita memerlukan 10 atau bahkan 100 data siswa sebagai data testing, kita bisa menggunakan menerapkan perulangan for pada SiswaSeeder-nya tadi.
Pengertian dan Cara Menggunakan Faker pada Laravel
Faker adalah library PHP yang dibuat oleh Francois Zaninotto. Faker merupakan library yang berguna untuk membuat data palsu, faker mampu meng-generate ratusan bahkan ribuan data testing secara acak. Faker berguna untuk membuat contoh data-data, misalnya kita memerlukan 20 data siswa sebagai data testing di aplikasi yang sedang kita bangun, maka kita bisa menggunakan Faker.
Faker akan meng-generate secara otomatis nama-nama siswa, nama siswa yang digenerate oleh Fakerpun bukan nama asal-asalan, datanya persis seperti data asli. Ibaratnya Faker ini sudah menyediakan banyak sekali data untuk kita gunakan.
Faker sendiri sebenarnya sudah diterapkan pada Laravel, jadi kita tinggal memanggil dan langsung menggunakan class Faker ini saja. Dokumentasi lengkap tentang Library PHP Faker ini kita baca di sini, sedangkan dokumentasi lengkap penggunaan Faker di Laravel bisa kita baca di dokumentasi laravel di sini.
Cara Penggunaan Faker
Misalnya kita membutuhkan 50 data siswa, yang akan kita jadikan sebagai data testing pada aplikasi yang sedang kita bangun dan sekarang kita akan membuat data siswa dengan menggunakan Faker. Buka file seeder SiswaSeeder.php yang sudah kita buat tadi dan ketik syntax berikut :
latihan_laravel/database/seeds/SiswaSeeder.php
<?php namespace Database\Seeders; use Illuminate\Database\Seeder; use Faker\Factory as Faker; class SiswaSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $faker = Faker::create('id_ID'); for($i = 1; $i <= 50; $i++){ // insert data ke table siswa menggunakan Faker \DB::table('siswa')->insert([ 'nis' => $faker->randomDigit, 'nama' => $faker->name, 'kelas' => $faker->company, 'alamat' => $faker->address, 'hp' => $faker->numberBetween(8000,9000) ]); } } }
Perhatikan syntax di atas, untuk menggunakan Faker yang pertama kali harus kita lakukan adalah memanggil class Faker dan di sini kita mengubahnya sebagai Faker, agar lebih singkat saat kita tuliskan perintahnya.
use Faker\Factory as Faker;
kemudian kita simpan perintahnya ke dalam variabel $faker
$faker = Faker::create('id_ID')
di dalam parameter create() bisa kita isi kode negara sesuai keinginan, di sini saya mengisi dengan ‘id_ID’, sehingga nantinya data-data yang diberikan oleh Faker ini adalah data dari negara Indonesia, misalnya namanya nama-nama orang Indonesia.
Kemudian untuk menampilkan data-data nama yang disediakan oleh Faker kita bisa menggunakan perintah $faker->randomDigit untuk menginput NIS, $faker->name untuk menginput nama, $faker->company untuk menginput kelas, ‘alamat’ => $faker->address untuk menginput alamat dan $faker->numberBetween(8000,9000) untuk menginput nomor HP.
Di sini kita menggunakan perulangan for sebanyak 50 kali, agar faker ini menampilkan mengisi sebanyak 50 data.
for($i = 1; $i <= 50; $i++){ // insert data ke table siswa menggunakan Faker \DB::table('siswa')->insert([ 'nis' => $faker->randomDigit, 'nama' => $faker->name, 'kelas' => $faker->company, 'alamat' => $faker->address, 'hp' => $faker->numberBetween(8000,9000) ]); }
Sekarang coba kita jalankan seeder SiswaSeeder.php ini lagi dengan perintah php artisan :
php artisan db:seed --class=SiswaSeeder
maka Faker akan membuatkan 50 data siswa untuk data testing kita dan terinput ke table siswa.
Seperti yang terlihat pada gambar table siswa di atas kita telah memiliki banyak data siswa sekarang, walaupun kita tidak tahu nama kelas siswa yang dibuat oleh Faker ini karena kita menggunakan company sebagai data fakernya, hal tersebut tidak menjadi masalah karena data yang digunakan merupakan data dummy, yang penting kita telah tau cara menggunakan dan kegunaan faker di laravel.
Sekian tutorial Seeding dan Faker Pada Laravel, semoga bermanfaat.f
Referensi :
- https://www.malasngoding.com/seeding-dan-faker-pada-laravel/