Laravel 5 - semilla artesanal [ReflectionException] La clase SongsTableSeeder no existe
Cuando ejecuto php artisan db:seed aparece el siguiente error:
[ReflectionException] Class SongsTableSeeder does not exist
¿Qué está pasando?
Mi clase DatabaseSeeder:
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();
$this->call('SongsTableSeeder');
}
}
Mi clase SongsTableSeeder:
<?php
// Composer: "fzaninotto/faker": "v1.4.0"
use Faker\Factory as Faker;
use Illuminate\Database\Seeder;
use DB;
class SongsTableSeeder extends Seeder {
public function run()
{
$faker = Faker::create();
$songs = [];
foreach(range(1, 10) as $index)
{
$songs[] = ['title' => $faker->words(rand(1,4))];
}
DB::table('songs')->insert($songs);
}
}
Aceptado
Debe colocarlo SongsTableSeeder
en SongsTableSeeder.php
el mismo directorio donde tiene su DatabaseSeeder.php
archivo.
Y necesitas ejecutar en tu consola:
composer dump-autoload
para generar un nuevo mapa de clases y luego ejecutar:
php artisan db:seed
Lo acabo de probar. Está funcionando sin problemas en Laravel 5.
Lo resolví haciendo esto:
- Copie el contenido del archivo.
- Remover archivo.
- Ejecute el comando: php artisan make:seeder.
- Copie el contenido del archivo nuevamente en este archivo.
Esto sucedió porque hice un cambio en el nombre del archivo. No sé por qué no funcionó después del cambio.
El archivo SongsTableSeeder.php debe estar en el directorio base de datos/seeds o en su subdirectorio.
Necesitas ejecutar:
composer dump-autoload
y luego:
php artisan db:seed
o:
php artisan db:seed --class=SongsTableSeeder