Tutorial Integrasi Laravel Dengan RajaOngkir #3 : Membuat Migration & Seeder


Tutorial Integrasi Laravel Dengan RajaOngkir #3 : Membuat Migration & Seeder

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


Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami