texto sublime para mejor ides gratis editores desarrollo configurar codigo laravel composer-php laravel-5 artisan

sublime - Laravel 5-semilla artesanal[ReflectionException] Clase SongsTableSeeder no existe



mejor ide para php 2018 (9)

El archivo SongsTableSeeder.php debe estar en el directorio de la base de datos / semillas o en su subdirectorio.

Necesita ejecutar:

composer dump-autoload

y entonces:

php artisan db:seed

o:

php artisan db:seed --class=SongsTableSeeder

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); } }


Estoy ejecutando la versión más reciente de Laravel 5 dev, y si cambiaste el espacio de nombres necesitarás llamar a tu clase inicial así:

$this->call(''/todoparrot/TodolistTableSeeder'');

Obviamente, deberás reemplazar todoparrot con tu espacio de nombres designado. De lo contrario, recibiré el mismo error indicado en la pregunta original.


Laravel requiere una clase de semilla "raíz":

Vea la página de ayuda del artesano:

$ php artisan help db:seed Usage: db:seed [options] Options: --class[=CLASS] The class name of the root seeder [default: "DatabaseSeeder"] --database[=DATABASE] The database connection to seed --force Force the operation to run when in production. -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --env[=ENV] The environment the command should run under -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Help: Seed the database with records

Si desea eliminar el DatabaseSeeder, debe definir la clase --class con la opción --class .


Lo solucioné al hacer esto:

  1. Copie el contenido del archivo.
  2. Remover archivo.
  3. Ejecutar el comando: php artisan make: seeder.
  4. 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.


Necesitas poner SongsTableSeeder en el archivo SongsTableSeeder.php en el mismo directorio donde tienes tu archivo DatabaseSeeder.php .

Y necesitas ejecutar en tu consola:

composer dump-autoload

para generar un nuevo mapa de clase y luego ejecutar:

php artisan db:seed

Acabo de probarlo. Está trabajando sin problemas en Laravel 5


Si nuestro CustomTableSeeder se encuentra en el mismo directorio con DatabaseSeeder, deberíamos utilizar el siguiente:

$this->call(''database/seeds/CustomTableSeeder'');

en nuestro archivo DatabaseSeeder; entonces se lanzará otro error que diga: ''DB Class not found'', entonces deberíamos agregar nuestra fachada DB a nuestro archivo CustomTableSeeder como se muestra a continuación:

use Illuminate/Support/Facades/DB;

funcionó para mí!


Solo he usado SINGLE FILE con DOS clases en el siguiente:

use Illuminate/Database/Seeder; use Illuminate/Database/Eloquent/Model; use App/Lesson; use Faker/Factory as Faker; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { //Lesson::truncate(); Model::unguard(); $this->call("LessonsTableSeeder"); } } class LessonsTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $faker = Faker::create(); foreach(range(1,30) as $index) { Lesson::create([''title'' => $faker->sentence(5), ''body'' => $faker->paragraph(4)]); } } }


SongsTableSeeder.php debe estar en el directorio de bases de datos / semillas

Pasos del comando de la consola:

composer dump-autoload

y entonces:

php artisan cache:clear

y entonces:

php artisan optimize

y entonces:

php artisan db:seed

o:

php artisan db:seed --class=SongsTableSeeder


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 dado el número de archivos que manejamos, es fácil olvidarse de copiarlos en el servidor cada vez.