My Course — Membangun Website Food Store Dengan Laravel Filament, Livewire dan Payment Gateway

Membuat Seeder Cities


Setelah berhasil membuat seeder untuk data provinces, maka kita akan lanjutkan membuat untuk data cities atau kota.

Silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Laravel-nya.

go
php artisan make:seeder CitiesTableSeeder

Jika perintah di atas berhasil di jalankan, maka kita akan mendapatkan 1 file seeder baru dengan nama CitiesTableSeeder.php yang berada di dalam folder database/seeders. Silahkan buka file tersebut dan ubah kode-nya menjadi seperti berikut ini :

php
<?php namespace Database\Seeders; use App\Models\City; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\Http; use Illuminate\Database\Console\Seeds\WithoutModelEvents; class CitiesTableSeeder extends Seeder { /** * Run the database seeds. */ public function run(): void { //Fetch Rest API $response = Http::withHeaders([ //api key rajaongkir 'key' => config('rajaongkir.api_key'), ])->get('https://api.rajaongkir.com/starter/city'); //loop data from Rest API foreach($response['rajaongkir']['results'] as $city) { //insert ke table "cities" City::create([ 'id' => $city['city_id'], 'province_id' => $city['province_id'], 'name' => $city['city_name'] . ' - ' . '('. $city['type'] .')', ]); } } }

Di atas, pertama kita melakukan import Model City, karena kita akan menggunakan model ini untuk melakukan insert data.

perl
use App\Models\City;

Setelah itu, kita juga import Facades Http Client dari Laravel, atau biasa disebut dengan Guzzle, ini akan digunakan untuk melakukan fetching ke dalam sebuah Rest API.

perl
use Illuminate\Support\Facades\Http;

Dan di dalam method run kita menambahkan beberapa kode, kurang lebih seperti berikut ini :

php
//Fetch Rest API $response = Http::withHeaders([ //api key rajaongkir 'key' => config('rajaongkir.api_key'), ])->get('https://api.rajaongkir.com/starter/city');

Di atas kita melakukan fetching ke dalam endpoint Rest API https://api.rajaongkir.com/starter/city dan untuk method-nya adalah GET, dan di dalam headers kita tambahkan API KEY dari Raja Ongkir.

Setelah data di dapatkan, kita lakukan perulangan menggunakan foreach dan di dalamnya kita melakukan insert data menggunakan Model.

php
//loop data from Rest API foreach($response['rajaongkir']['results'] as $city) { //insert ke table "cities" City::create([ 'id' => $city['city_id'], 'province_id' => $city['province_id'], 'name' => $city['city_name'] . ' - ' . '('. $city['type'] .')', ]); }
Tidak ada table of contents