web-dev-qa-db-fra.com

Laravel le semoir donne une erreur. Classe non trouvée

Je suis un débutant dans Laravel et je m'apprends à m'authentifier à partir d'une table de connexion. J'ai migré et créé la table. Maintenant, j'essaie de stocker les données dans la table de connexion, mais la commande Invite me donne continuellement une erreur, qui dit Fatal Error, class login not found et je n'ai aucune idée de ce que j'ai manqué. Alors quelqu'un peut-il m'aider s'il vous plaît? Voici le code que j'ai, et oui j'utilise Laravel 4.3

<?php
class loginTableSeeder extends Seeder
{
    public function run()
    {
        DB::table('login')->delete();
        login::create(array(
            'username'  =>  'sanju',
            'password'  =>  Hash::make('sanju')
            ));
    }
}


?> 
10
samhu kiklsk

Vous devez créer un modèle Eloquent pour cette table pour pouvoir utiliser Login::create(). Vous pouvez le faire avec une simple commande artisanale:

$ php artisan generate:model Login

Cela générera un nouveau modèle Eloquent dans le répertoire app/models qui devrait ressembler à ceci.

class Login extends Eloquent {

    protected $fillable = [];
    protected $table = 'login';

}

Votre code devrait fonctionner après cela. Si cela ne fonctionne toujours pas, exécutez composer dump-autoload.

7
Bogdan

MODIFIER

Maintenant, je vois, le problème vient de votre classe login (avec la question précédente formater l'erreur exacte était illisible). Vous devriez regarder à nouveau quel est le nom du fichier dans lequel vous avez la classe login et quel est le nom de la classe. La convention est que le fichier doit avoir le nom Login.php (avec lettre majuscule) et le nom de la classe doit également être Login (avec lettre majuscule). Vous devriez également vérifier dans quel espace de noms est votre classe Login. S'il est défini dans l'espace de noms App, vous devez ajouter à votre LoginTableSeeder:

use App\Login;

dans la ligne suivante après <?php

en gros, le début de votre fichier devrait ressembler à ceci:

<?php

    use App\Login;
    use Illuminate\Database\Seeder;

REPONSE ANTERIEURE

Vous n'avez pas expliqué quelle est l'erreur exacte (probablement l'erreur concerne la classe Seeder) mais:

Dans database/seeds/DatabaseSeeder.php, vous devez exécuter le segment de connexion comme suit:

$this->call('LoginTableSeeder');

Vous devriez mettre dans database/seeds le fichier LoginTableSeeder.php avec une majuscule au début.

Maintenant, votre fichier fichier LoginTableSeeder.php devrait ressembler à ceci:

<?php

use Illuminate\Database\Seeder;

class LoginTableSeeder extends Seeder
{
    public function run()
    {

        // your code goes here
    }
}

vous devez importer Seeder avec use au début du fichier et encore une fois, le nom de la classe doit commencer par une lettre majuscule.

Maintenant, vous devriez exécuter composer dump-autoload et maintenant, lorsque vous exécuterez php artisan db:seed, cela fonctionnera correctement.

15
Marcin Nabiałek

Il suffit d'exécuter composer dump-autoload -o Pour permettre à l'autochargeur de récupérer les nouvelles classes, car le dossier de la base de données n'est pas automatiquement chargé avec PSR-4.

8
DannyFeliz

Cela a fonctionné pour moi

composer dump-autoload -o 
2
rabin

J'ai le même problème mais vous pouvez le résoudre en ajoutant votre espace de nom:

namespace yournamespace; 
use App\Login;
use Illuminate\Database\Seeder;
1
hamidreza samsami

J'ai eu le même problème. Dans mon cas, le compositeur était extrêmement vieux et après sa mise à jour, tout se passe bien.

Mettre à jour le compositeur avec la commande:

$ mise à jour automatique du compositeur 

J'espère que cela peut aider les autres.

0
Fernando Kosh