Open hildaaaa opened 4 years ago
Here is a workaround.
<?php
namespace Database\Seeders;
use DB;
use Illuminate\Database\Seeder;
use Webpatser\Countries\Countries;
class CountriesSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run() {
//Empty the countries table
DB::table(\Config::get('countries.table_name'))->delete();
//Get all of the countries
$countryModel = new Countries();
$countries = $countryModel->getList();
foreach ($countries as $countryId => $country){
DB::table(\Config::get('countries.table_name'))->insert(array(
'id' => $countryId,
'capital' => ((isset($country['capital'])) ? $country['capital'] : null),
'citizenship' => ((isset($country['citizenship'])) ? $country['citizenship'] : null),
'country_code' => $country['country-code'],
'currency' => ((isset($country['currency'])) ? $country['currency'] : null),
'currency_code' => ((isset($country['currency_code'])) ? $country['currency_code'] : null),
'currency_sub_unit' => ((isset($country['currency_sub_unit'])) ? $country['currency_sub_unit'] : null),
'currency_decimals' => ((isset($country['currency_decimals'])) ? $country['currency_decimals'] : null),
'full_name' => ((isset($country['full_name'])) ? $country['full_name'] : null),
'iso_3166_2' => $country['iso_3166_2'],
'iso_3166_3' => $country['iso_3166_3'],
'name' => $country['name'],
'region_code' => $country['region-code'],
'sub_region_code' => $country['sub-region-code'],
'eea' => (bool)$country['eea'],
'calling_code' => $country['calling_code'],
'currency_symbol' => ((isset($country['currency_symbol'])) ? $country['currency_symbol'] : null),
'flag' =>((isset($country['flag'])) ? $country['flag'] : null),
));
}
}
}
php artisan db:seed --class=CountriesSeeder
I had the same error. Adding the file worked, but as you can see in the first error, it's referring to the wrong path.
fopen(../database/seeds/CountriesSeeder.php): failed to open stream: No such file or directory at vendor/webpatser/laravel-countries/src/commands/MigrationCommand.php:119
I went to the file MigrationCommand.php and changed the line with the path from $seeder_file = $this->laravel->path . "/../database/seeds/CountriesSeeder.php";
to $seeder_file = $this->laravel->path . "/../database/seeders/CountriesSeeder.php";
.
Mind the path in the first one still being called seeds in stead of seeders.
That will fix this issue too. @chadriae
However, changing that will affect other third-party libraries with a seeder in the correct location.
Also, I wouldn't ever recommend changing vendor files directly. Or else they will be overriden by composer. Plus you should avoid tracking vendor with Git.
Since Laravel8, seeders have been moved to
database/seeders
See here: https://laravel.com/docs/8.x/seedingHowever currently the migration creation file tries to create the seeder at:
$seeder_file = $this->laravel->path."/../database/seeds/CountriesSeeder.php";
So this is failing with the error: