ReflectionException: Class ClassName n'existe pas-Laravel
aussitôt, je suis en tapant php artisan db:seed
la commande.
je suis Erreur Comme:
[ReflectionException]
Classe UserTableSeeder n'existe pas
root@dd-desktop:/opt/lampp/htdocs/dd/laravel# php artisan db:seed
Ici, c'Est mon UserTableSeeder.php
& DatabaseSeeder.php
Page
UserTableSeeder.php
<?php
use IlluminateDatabaseSeeder;
use IlluminateDatabaseEloquentModel;
class UserTableSeeder extends Seeder
{
public function run()
{
DB::table('users')->delete();
User::create(array(
'name' => 'Chris Sevilleja',
'username' => 'sevilayha',
'email' => 'chris@scotch.io',
'password' => Hash::make('awesome'),
));
}
}
DatabaseSeeder.php
<?php
use IlluminateDatabaseSeeder;
use IlluminateDatabaseEloquentModel;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//Model::unguard();
Eloquent::unguard();
$this->call('UserTableSeeder');
//$this->call(UserTableSeeder::class);
//Model::reguard();
}
}
je parle de Ce Lien Concevoir Et Développer La Page De Connexion. Merci de m'Aider à résoudre ce problème. Grâce.
14 réponses
effectuer un composer update
, puis composer dump-autoload
.
Si le ci-dessus ne résout pas le problème, modifiez le classmap
dans votre composer.json
fichier tel qu'il contient le chemin relatif au projet vers vos fichiers php:
"autoload-dev": {
"classmap": [
"tests/TestCase.php",
"database/seeds/UserTableSeeder.php" //include the file with its path here
]
}, /** ... */
et peu après, effectuer un composer dump-autoload
, et il devrait maintenant fonctionner comme un breeze!
Modifier par @JMSamudio
Si composer dump-autoload
n'est pas trouvé, il suffit d'activer cette option composer config -g -- disable-tls true
.
à Partir de mon expérience, la plupart du temps lorsque la classe que vous essayez d'appeler a quelques bugs et ne peut pas être compilé. Veuillez vérifier si la classe qui n'est pas reflétée peut être exécuté à son propre.
j'ai eu ce problème et j'ai pu le résoudre en faisant php artisan config:cache
. Le problème était que j'avais déjà exécuté cette commande auparavant et plus tard inclus quelques nouvelles classes de semoir. Les configurations de cache ne reconnaissaient pas les nouvelles classes. Donc exécuter cette commande à nouveau a fonctionné.
si vous vous voyez apporter des changements fréquents pour inclure de nouvelles classes de semis, alors envisagez php artisan config:clear
. Cela vous permettra de faire autant de modifications que vous le souhaitez et puis après le test, vous pouvez l'exécuter config:cache
encore une fois pour faire tourner les choses de façon optimale à nouveau.
j'ai le même problème avec un class
. J'ai essayer composer dump-autoload
et php artisan config:clear
mais pas résoudre mon problème.
puis j'ai décidé de lire mon code pour trouver n'importe quoi problème, ain je trouve le problème. Le problème dans mon cas, c'est que virgule Manque dans ma classe. Voir mon code de modèle:
{
protected
$fillable = ['agente_id', 'matter_id', 'amendment_id', 'tipo_id'];
public
$rules = [
'agente_id' => 'required', // <= See the comma
'tipo_id' => 'required'
];
public
$niceNames = [
'agente_id' => 'Membro', // <= This comma is missing on my code
'tipo_id' => 'Membro'
];
}
Pour une raison quelconque, j'ai dû courir composer dumpautoload -o
. Avis drapeau -o
ce qui veut dire avec optimisation. Je ne sais pas pourquoi ça ne marche qu'avec, mais essayez. Peut-être que cela aide quelqu'un.
essayez d'utiliser la commande suivante
php artisan db:seed --class=DatabaseSeeder
Vous devez l'affecter à un espace de noms pour la trouver.
namespace App\Http\Controllers;
Je n'écris pas comme réponse à cette question. Mais je veux aider les autres s'ils ont fait face au même bug mais les réponses mentionnées ici ne fonctionne pas. J'ai aussi essayé toutes les solutions mentionnées ici. Mais mon problème était avec le namespace j'ai utilisé. Le chemin était mauvais.
L'espace de noms que j'ai utilisé est:
namespace App\Http\Controllers;
mais en fait le contrôleur réside dans un dossier nommé 'Interface'
namespace à:namespace App\Http\Controllers\Frontend;
quand il cherche le fichier de classe seeder, vous pouvez lancer compositeur de vidage-autoload. Quand vous l'exécutez à nouveau et qu'il est à la recherche du modèle, vous pouvez le référencer sur le fichier seeder lui-même. Comme,
use App\{Model};
ne sont Pas strictement liées à la question, mais n'a reçu l'erreur ReflectionException: Class config does not exist
j'avais ajouté un nouveau .env
variable avec des espaces. Cours d'exécution php artisan config:clear
m'a dit que tout .env
la variable avec des espaces doit être entourée de "
S.
Fait et ma demande a indiqué travailler à nouveau, pas besoin de config clair que toujours en développement sur Laravel Homestead (5.4)
j'ai recréé la classe, et ça a marché. Copiez tout le contenu du fichier, supprimez le fichier, et lancez php artisan make:seeder ModelTableSeeder
. Parce que composer dump-autoload
n'a pas fonctionné pour moi.
Vous pouvez essayer d'écrire app
use
majuscules, donc App
. A travaillé pour moi.