| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- namespace Database\Seeders;
- use App\Models\City;
- use App\Models\State;
- use App\Models\Country;
- use GuzzleHttp\Client;
- use Illuminate\Database\Seeder;
- class BrazilCitiesSeeder extends Seeder
- {
- public function run()
- {
- try {
- $brasil = Country::firstOrNew(
- [
- 'name' => 'Brasil',
- 'code' => 'BR'
- ]
- );
- $brasil->save();
- $client_estados = new Client();
- $url_estados = 'https://servicodados.ibge.gov.br/api/v1/localidades/estados';
- $response_estados = $client_estados->request('GET', $url_estados);
- $estados = json_decode($response_estados->getBody());
- foreach ($estados as $estado) {
- echo "Criando estado {$estado->nome}\n";
- $new_estado = State::firstOrNew(
- [
- 'name' => $estado->nome,
- 'code' => $estado->sigla,
- 'country_id' => $brasil->id
- ]
- );
- $new_estado->save();
- $client_cidades = new Client();
- $url_cidades = "https://servicodados.ibge.gov.br/api/v1/localidades/estados/$estado->id/municipios";
- $response_cidades = $client_cidades->request('GET', $url_cidades);
- $cidades = json_decode($response_cidades->getBody());
- $total_cidades = 0;
- foreach ($cidades as $cidade) {
- $new_cidade = City::firstOrNew(
- [
- 'name' => $cidade->nome,
- 'state_id' => $new_estado->id,
- 'country_id' => $brasil->id
- ]
- );
- $new_cidade->save();
- $total_cidades++;
- }
- echo " -> Total de cidades: {$total_cidades}\n";
- }
- } catch (\Throwable $th) {
- throw $th;
- return false;
- }
- }
- }
|