Tutorial Integrasi Laravel Dengan RajaOngkir #3 : Membuat Migration & Seeder - halo teman-teman semuanya, di artikel sebelumnya kita semua sudah berhasil menginstall Package RajaOngkir di aplikasi kita.
Pada artikel kali ini kita semua akan belajar bagaimana cara membuat migration & seeder untuk mendapatkan data provinsi dan kota diseluruh indonesia.
Sebenarnya di Package RajaOngkir kita sudah disediakan data provinsi dan kota, akan tetapi data tersebut akan kita simpan saja ke dalam database.
Karena dengan menggunakan database sendiri aplikasi kita akan lebih cepat mendpatkan datanya tanpa harus selalu melakukan request ke server RajaOngkir terus menerus.
Langkah 1 - Membuat Model & Migration
Silahkan jalankan perintah dibawah ini untuk membuat model Provinsi berserta migrationnya :
php artisan make:model Province -m
Selanjutnya jalankan perintah dibawah ini untuk membuat model Kota / City berserta migrationnya :
php artisan make:model City -m
Sekarang silahkan teman-teman buka file App\Province.php
dan kode dibawah ini di dalam Class Province
:
protected $guarded = [];
Atau kurang lebih jika dituliskan secara lengkap seperti berikut ini :
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Province extends Model
{
protected $guarded = [];
}
Selanjutnya silahkan teman-teman buka file App\City.php
dan kode dibawah ini di dalam Class City
:
protected $guarded = [];
Atau kurang lebih jika dituliskan secara lengkap seperti berikut ini :
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class City extends Model
{
protected $guarded = [];
}
Penambahan kode diatas, difungsikan untuk mengizinkan mass assigment di tabel provincies dan tabel cities
Selanjutnya sekarang kita akan lanjutkan mengedit beberapa file migration yang sudah kita buat, silahkan buka file database/migrations/2020_04_12_001449_create_provinces_table.php
di bagian function run
silahkan ubah menjadi seperti berikut ini :
public function up()
{
Schema::create('provinces', function (Blueprint $table) {
$table->id();
$table->unsignedInteger('province_id');
$table->string('name');
$table->timestamps();
});
}
Dari penambahan kolom diatas, kita berhasil menambahkan 2
kolom, yaitu province_id
dan name
.
Sekarang kita akan lanjutkan mengedit beberapa file migration City, silahkan buka file database/migrations/2020_04_12_001523_create_cities_table.php
di bagian function run
silahkan ubah menjadi seperti berikut ini :
public function up()
{
Schema::create('cities', function (Blueprint $table) {
$table->id();
$table->unsignedInteger('province_id');
$table->unsignedInteger('city_id');
$table->string('name');
$table->timestamps();
});
}
Dari penambahan kolom diatas, kita berhasil menambahkan 3 kolom
, yaitu province_id
, city_id
dan name
.
Setelah semuanya selesai, sekarang kita jalankan proses migrasi tabelnya, silahkan teman-teman jalankan perintah dibawah ini :
php artisan migrate
Langkah 2 - Membuat Table Seeder
Setelah kita berhasil membuat tabel provincies dan cities selanjutnya kita akan mengisi tabel tersebut dari RajaOngkir.
Sekarang, silahkan teman-teman jalankan perintah dibawah ini untuk membuat Table Seeder :
php artisan make:seeder LocationsSeeder
Setelah itu silahkan buka file database/seeds/LocationsSeeder.php
dan ubahlah kodenya menjadi seperti berikut ini :
<?php
use Illuminate\Database\Seeder;
use Kavist\RajaOngkir\Facades\RajaOngkir;
use App\Province;
use App\City;
class LocationsSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$daftarProvinsi = RajaOngkir::provinsi()->all();
foreach ($daftarProvinsi as $provinceRow) {
Province::create([
'province_id' => $provinceRow['province_id'],
'name' => $provinceRow['province'],
]);
$daftarKota = RajaOngkir::kota()->dariProvinsi($provinceRow['province_id'])->get();
foreach ($daftarKota as $cityRow) {
City::create([
'province_id' => $provinceRow['province_id'],
'city_id' => $cityRow['city_id'],
'name' => $cityRow['city_name'],
]);
}
}
}
}
Setelah itu, silahkan buka file database/seeds/DatabaseSeeder.php
dan pada bagian function run
ubah menjadi seperti berikut ini :
public function run()
{
$this->call(LocationsSeeder::class);
}
Sekarang silahkan jalankan perintah dibawah ini :
composer dump-autoload
Langkah 3 - Menjalankan Seeder
Sekarang silahkan teman-teman jalankan perintah dibawah ini :
php artisan db:seed
Silahkan tunggu beberapa saat, karena proses ini akan memasukkan data provinsi dan kota diseleuruh indonesia ke dalam database.
Kurang lebih hasil dari tabel provinsi seperti berikut ini :
Dan kurang lebih hasil dari tabel kota seperti berikut ini :
Sampai disini pembahasan cara membuat migration dan membuat table seeder, di artikel selanjutnya kita semua akan belajar bagaimana cara mengintegrasikan Laravel & RajaOngkir.
Terima Kasih