Dès que je tape la commande php artisan db:seed
.
Je reçois Erreur J'aime:
[ReflectionException]
La classe UserTableSeeder n'existe pas
root@dd-desktop:/opt/lampp/htdocs/dd/laravel# php artisan db:seed
Voici ma page UserTableSeeder.php
& DatabaseSeeder.php
UserTableSeeder.php
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class UserTableSeeder extends Seeder
{
public function run()
{
DB::table('users')->delete();
User::create(array(
'name' => 'Chris Sevilleja',
'username' => 'sevilayha',
'email' => '[email protected]',
'password' => Hash::make('awesome'),
));
}
}
DatabaseSeeder.php
<?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();
Eloquent::unguard();
$this->call('UserTableSeeder');
//$this->call(UserTableSeeder::class);
//Model::reguard();
}
}
Je réfère ce site Lien Pour concevoir et développer la page de connexion . S'il vous plaît, aidez-moi à résoudre ce problème. Merci.
Effectuez un composer update
, puis composer dump-autoload
.
Si ce qui précède ne résout pas le problème, modifiez le fichierclassmap
dans votre fichier composer.json
de sorte qu'il contienne le chemin d'accès 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 de temps après, effectuez un composer dump-autoload
, et cela devrait maintenant fonctionner comme un breeze!
Si composer dump-autoload
est introuvable, activez simplement cette option composer config -g -- disable-tls true
.
D'après mon expérience, cela apparaîtra la plupart du temps lorsque la classe que vous essayez d'appeler a des bogues et ne peut pas être compilée. Veuillez vérifier si la classe qui n'est pas reflétée peut être exécutée seule.
Un composer dump-autoload
devrait résoudre ce problème.
J'ai eu ce problème et je pourrais le résoudre en faisant php artisan config:cache
. Le problème était que j'avais déjà exécuté cette commande précédemment et incluais plus tard de nouvelles classes de segmentation. Les configurations mises en cache ne reconnaissaient pas les nouvelles classes. Donc, exécuter à nouveau cette commande a fonctionné.
Si vous voyez que vous apportez des modifications fréquentes pour inclure de nouvelles classes de segmentation, envisagez d'exécuter php artisan config:clear
. Cela vous permettra d’apporter autant de modifications que vous le souhaitez et, après le test, de réexécuter config:cache
pour que les choses fonctionnent à nouveau de manière optimale.
J'ai le même problème avec un class
. J'essaie composer dump-autoload
et php artisan config:clear
mais je ne résous pas mon problème.
Ensuite, j'ai décidé de lire mon code pour trouver tout problème, ain je trouve le problème. Le problème dans mon cas ne manque que des virgules 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û exécuter composer dumpautoload -o
. Avis drapeau -o
qui signifie avec optimisation. Je ne sais pas pourquoi ça marche seulement avec ça, mais essayez-le. Peut-être que ça aide quelqu'un.
Je n'écris pas comme réponse à cette question. Mais je veux aider les autres s'ils sont confrontés au même bogue mais les réponses mentionnées ici ne fonctionnent pas. J'ai aussi essayé toutes les solutions mentionnées ici. Mais mon problème était avec lenamespacej'ai utilisé. Le chemin était mauvais.
L'espace de nom que j'ai utilisé est:
namespace App\Http\Controllers;
Mais en réalité, le contrôleur réside dans un dossier nommé 'FrontEnd'
la solution est donc de changer le namespace en:
namespace App\Http\Controllers\Frontend;
essayez d'utiliser la commande suivante
php artisan db:seed --class=DatabaseSeeder
Vous devez l'assigner à un espace de noms pour le trouver.
namespace App\Http\Controllers;
J'ai recréé la classe et cela a fonctionné. Copiez tout le contenu du fichier, supprimez le fichier et exécutez php artisan make:seeder ModelTableSeeder
. Parce que composer dump-autoload
n'a pas fonctionné pour moi.
mise à jour du compositeur
Above Command travaille pour moi.
Chaque fois que vous effectuez une nouvelle migration dans laravel, vous devez actualiser "class map" dans le fichier composer.json.
Lorsqu'il recherche le fichier de classe Seeder, vous pouvez exécuter composer dump-autoload . Lorsque vous l'exécutez à nouveau et qu'il recherche le modèle, vous pouvez le référencer dans le fichier de segmentation lui-même. Ainsi,
use App\{Model};
composer dump-autoload
cela va le réparer
Pas strictement lié à la question mais a reçu l'erreur ReflectionException: Class config does not exist
J'avais ajouté une nouvelle variable .env
avec des espaces. Lancer php artisan config:clear
m'a dit que toute variable .env
contenant des espaces devrait être entourée de "
s.
Est-ce que cela et ma candidature ont de nouveau fonctionné, pas besoin de configuration comme toujours en développement sur Laravel Homestead (5.4)
Vous pouvez essayer d'écrire app
en use
en majuscule, donc App
. Travaillé pour moi.