Cuando ejecuto php artisan db: seed obtengo el siguiente error:
[ReflectionException] Class SongsTableSeeder does not exist
Que esta 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);
}
}
composer dump-autoload
?SongsTableSeeder
definición de clase?Respuestas:
Debe colocar el
SongsTableSeeder
archivoSongsTableSeeder.php
en el mismo directorio donde tiene suDatabaseSeeder.php
archivo.Y necesitas correr en tu consola:
para generar un nuevo mapa de clase y luego ejecutar:
Lo acabo de probar. Está funcionando sin problemas en Laravel 5
fuente
composer dumpautoload
también vueladump-autoload
regenera la lista de todas las clases que deben incluirse en el proyecto, se usa cuando tiene una nueva clase dentro de su proyecto. Normalmente, la ejecuciónmake:*
agregará la clase recién creada, pero esto no ocurrirá si crea manualmente una sembradora. Al menos así es como entiendo que funcione después de 5 minutos de búsqueda. No soy un expertocomposer dump-autoload
trabajé para mí.Lo resolví haciendo esto:
Esto sucedió porque hice un cambio en el nombre del archivo. No sé por qué no funcionó después del cambio.
fuente
composer dump-autoload
no me funciona. Debo recrear la clase de sembradora para que funcione.El archivo SongsTableSeeder.php debe estar en el directorio de base de datos / semillas o en su subdirectorio.
Necesitas ejecutar:
y entonces:
o:
fuente
SongsTableSeeder.php debe estar en el directorio de base de datos / semillas
Pasos de comando de la consola:
y entonces:
y entonces:
y entonces:
o:
fuente
php artisan optimize
parteEstoy ejecutando la última versión de desarrollo de Laravel 5, y si ha cambiado el espacio de nombres, deberá llamar a su clase semilla de esta manera:
Obviamente, deberá reemplazarlo
todoparrot
con su espacio de nombre designado. De lo contrario, recibo el mismo error indicado en la pregunta original.fuente
No olvide que
composer dump-autoload
funciona en relación con la sección de carga automática / mapa de clase decomposer.json
. Tenga cuidado con eso si necesita cambiar el directorio de sembradoras o usar múltiples directorios para almacenar sembradoras.fuente
Si nuestro CustomTableSeeder está en el mismo directorio que DatabaseSeeder, deberíamos usarlo como a continuación:
en nuestro archivo DatabaseSeeder; luego se lanzará otro error que dice: 'Clase DB no encontrada', entonces deberíamos agregar nuestra fachada DB a nuestro archivo CustomTableSeeder como se muestra a continuación:
¡funcionó para mí!
fuente
Solo he usado UN SOLO ARCHIVO con DOS clases en el siguiente:
fuente
Si ha copiado los archivos de las sembradoras de cualquier otro proyecto, debe ejecutar el comando artesanal; de lo
php artisan db:seed
contrario, está bien.fuente
[ReflectionException] Class Seeder does not exist
también tengo y cuando lo usocomposer dump-autoload
, recibo un errorpreg_match(): JIT compilation failed: no more memory
cuando lo ejecuto.Lo que hice es que puedo cambiar
;pcre.jit=1
apcre.jit=Off
en php.ini ! Puedes encontrar el camino usandophp --ini
en tu terminal!Estoy usando mac con php 7.3! Espero que ayude a cualquiera de ustedes por ahí!
fuente
Probablemente especifique el
.php
extensión y no encontró su clase.Lo que estaba haciendo :
Lo que resolvió mi problema: lo que estaba haciendo:
fuente
Tuve el mismo error de "excepción de reflexión". La solución fue copiar el archivo de clase en el servidor, desde dev, para mí. error tonto, pero dada la cantidad de archivos con los que tratamos, es fácil olvidar copiarlos al servidor cada vez.
fuente