Quando executo o php artisan db: seed , estou recebendo o seguinte erro:
[ReflectionException] Class SongsTableSeeder does not exist
O que está acontecendo?
Minha classe 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');
}
}
Classe My 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);
}
}
laravel
composer-php
laravel-5
artisan
Sasha
fonte
fonte
composer dump-autoload
?SongsTableSeeder
definição de classe?Respostas:
Você precisa colocar
SongsTableSeeder
no arquivoSongsTableSeeder.php
no mesmo diretório em que está o seuDatabaseSeeder.php
arquivo.E você precisa executar no seu console:
para gerar um novo mapa de classe e, em seguida, execute:
Acabei de testar. Está funcionando sem problemas no Laravel 5
fonte
composer dumpautoload
também voadump-autoload
regenera a lista de todas as classes que precisam ser incluídas no projeto, é usada quando você tem uma nova classe dentro do projeto. Normalmente, a execuçãomake:*
adicionará a classe recém-criada, mas isso não ocorrerá se você criar manualmente um semeador. Pelo menos é assim que eu entendo que funcione após 5 minutos de pesquisa. Eu não sou especialista.composer dump-autoload
funcionou para mim.Eu resolvi fazendo isso:
Isso aconteceu porque eu fiz uma alteração no nome do arquivo. Não sei por que não funcionou após a mudança.
fonte
composer dump-autoload
não funciona para mim. Preciso recriar a classe semeadora para fazê-la funcionar.O arquivo SongsTableSeeder.php deve estar no diretório database / seeds ou em seu subdiretório.
Você precisa executar:
e depois:
ou:
fonte
SongsTableSeeder.php deve estar no diretório database / seeds
Etapas de comando do console:
e depois:
e depois:
e depois:
ou:
fonte
php artisan optimize
parteEstou executando a versão mais recente do Laravel 5 dev e, se você alterou o espaço para nome, precisará chamar sua classe inicial assim:
Obviamente, você precisará substituir
todoparrot
pelo seu espaço para nome designado. Caso contrário, recebo o mesmo erro indicado na pergunta original.fonte
Não se esqueça que os
composer dump-autoload
trabalhos relacionados à seção autoload / classmap decomposer.json
. Tome cuidado com isso se precisar alterar o diretório de propagadores ou usar vários diretórios para armazenar os semeadores.fonte
Se o nosso CustomTableSeeder estiver no mesmo diretório do DatabaseSeeder, devemos usar o seguinte:
no nosso arquivo DatabaseSeeder; será gerado outro erro que diz: 'Classe de banco de dados não encontrada'; em seguida, devemos adicionar nossa fachada de banco de dados ao nosso arquivo CustomTableSeeder, como abaixo:
funcionou para mim!
fonte
Eu usei apenas SINGLE FILE com DUAS classes no seguinte:
fonte
Se você copiou os arquivos de propagadores de qualquer outro projeto, precisará executar o comando artisan,
php artisan db:seed
caso contrário, tudo bem.fonte
[ReflectionException] Class Seeder does not exist
Também recebi e quando usocomposer dump-autoload
, recebo um erropreg_match(): JIT compilation failed: no more memory
ao executá-lo.O que eu fiz é que eu mudar
;pcre.jit=1
parapcre.jit=Off
no php.ini ! Você pode encontrar o caminho usandophp --ini
no seu terminal!Estou usando o mac com php 7.3! Espero que ajude qualquer um de vocês por aí!
fonte
Você provavelmente especifica a
.php
extensão e ela não encontrou sua classe.O que eu estava fazendo:
O que resolveu meu problema: O que eu estava fazendo:
fonte
Eu tive o mesmo erro "exceção de reflexão". A solução foi copiar o arquivo de classe para o servidor, do dev, para mim. erro estúpido, mas, considerando quantos arquivos lidamos, é fácil esquecer de copiá-los para o servidor todas as vezes.
fonte