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')
));
}
}
?>
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.
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.
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.
Das hat für mich funktioniert
composer dump-autoload -o
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;
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.