webentwicklung-frage-antwort-db.com.de

Laravel Sämaschine gibt Fehler. Klasse nicht gefunden

Ich bin ein Neuling in Laravel und lehre mich, wie man sich von einer Anmeldetabelle aus authentifiziert. Ich habe die Tabelle migriert und erstellt. Jetzt versuche ich, die Daten in die Login-Tabelle zu säen, aber der Befehl Prompt gibt mir ständig einen Fehler, der Fatal Error, class login not found sagt, und ich habe keine Ahnung, was ich vermisst habe. Kann mir bitte jemand helfen? Hier ist der Code, den ich habe, und ja, ich benutze 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

Sie müssen ein Eloquent-Modell für diese Tabelle erstellen, um Login::create() verwenden zu können. Sie können das mit einem einfachen handwerklichen Befehl tun:

$ php artisan generate:model Login

Dadurch wird ein neues Eloquent-Modell im app/models-Verzeichnis erstellt, das so aussehen sollte.

class Login extends Eloquent {

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

}

Ihr Code sollte danach funktionieren. Wenn es immer noch nicht sicher ist, dass Sie composer dump-autoload ausführen.

7
Bogdan

EDIT

Jetzt sehe ich, das Problem liegt bei Ihrer login-Klasse (bei früheren Fragen war der genaue Fehler nicht lesbar). Sie sollten noch einmal nachsehen, wie der Dateiname der login-Klasse lautet und wie der Name der Klasse lautet. Die Konvention ist, dass die Datei den Namen Login.php (mit Großbuchstaben) und der Name der Klasse Login (mit Großbuchstaben) haben sollte. Sie sollten auch überprüfen, welcher Namespace Ihre Login-Klasse ist. Wenn es im Namespace App definiert ist, sollten Sie Folgendes hinzufügen: LoginTableSeeder:

use App\Login;

in der nächsten Zeile nach <?php

im Grunde sollte der Anfang Ihrer Datei so aussehen:

<?php

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

FRÜHERE ANTWORT

Sie haben nicht erklärt, was der genaue Fehler ist (wahrscheinlich ist der Fehler für die Klasse Seeder), aber:

In database/seeds/DatabaseSeeder.php sollten Sie Login Seeder folgendermaßen ausführen:

$this->call('LoginTableSeeder');

Sie sollten die database/seeds-Datei LoginTableSeeder.php mit einem Großbuchstaben am Anfang einfügen.

Nun sollte Ihre Datei LoginTableSeeder.php-Datei so aussehen:

<?php

use Illuminate\Database\Seeder;

class LoginTableSeeder extends Seeder
{
    public function run()
    {

        // your code goes here
    }
}

sie müssen Seeder mit use am Anfang der Datei importieren, und der Klassenname sollte wieder mit Großbuchstaben beginnen.

Jetzt sollten Sie composer dump-autoload ausführen und jetzt, wenn Sie php artisan db:seed ausführen, wird es funktionieren.

15

Führen Sie einfach composer dump-autoload -o Für den Autoloader aus, um die neuen Klassen zu übernehmen, da der Datenbankordner nicht automatisch mit PSR-4 automatisch geladen wird.

8
DannyFeliz

Das hat für mich funktioniert

composer dump-autoload -o 
2
rabin

Ich habe das gleiche Problem, aber Sie können es lösen, indem Sie Ihren Namespace hinzufügen:

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

Ich habe das gleiche Problem erlebt. In meinem Fall war der Komponist extrem alt und nach dem Update läuft alles gut.

Aktualisieren Sie den Composer mit dem Befehl:

$ composer Selbstaktualisierung 

Hoffe, es kann anderen helfen.

0
Fernando Kosh