2014-10-13 24 views
9

Ich bin ein Neuling in Laravel und ich lehre mich selbst, wie man von einer Login-Tabelle authentifizieren. Ich habe migriert und die Tabelle erstellt. Jetzt versuche ich, die Daten in die Login-Tabelle zu säen, aber die Eingabeaufforderung gibt mir ständig einen Fehler, der sagt Fatal Error, class login not found und ich habe keine Ahnung, was ich verpasst habe. Kann mir bitte jemand helfen? Hier ist der Code, den ich habe, und ja, ich bin mit Laravel 4,3Laravel Sämaschine gibt Fehler. Klasse nicht gefunden

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


?> 
+14

Versuchen Sie 'Komponist dumpautoload' –

+0

Sorry, es nicht für mich funktioniert. Ich versuchte es vor –

+2

Was ist das Ergebnis von 'php composer.phar diagnose' und es sollte' composer dump-autoload' mit einem Bindestrich – Ohgodwhy

Antwort

7

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

$ php artisan generate:model Login

Dadurch wird ein neues Eloquent Modell in app/models Verzeichnis erzeugen, die wie folgt 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.

+0

Hey, ich bin ein bisschen in der Nähe von dir. Die Lösung funktionierte aber nur zu 50%, jetzt ist der Fehler Basistabelle oder View nicht gefunden. Tabelle hariyali.Logins, aber meine Tabelle ist nur Login, also woher kamen diese Logins? Die zusätzlichen s stammen von –

+0

Geben Sie den Tabellennamen als Klasseneigenschaft in der Eloquent-Modellklasse 'protected $ table =' login '; 'an. Ich habe meine Antwort aktualisiert. – Bogdan

+0

Eloquent nimmt automatisch an, dass der Tabellenname die Kleinbuchstaben-Pluralversion Ihres Modellnamens ist. In diesem Fall bedeutet 'Login' Modellname, dass automatisch nach der' logins' Tabelle gesucht wird, sofern Sie nicht die '$ table' -Eigenschaft für Ihr Modell angeben. Sie können die [Eloquent Docs] (http://laravel.com/docs/master/eloquent) lesen, um mehr über die Konventionen zu erfahren. – Bogdan

13

EDIT

Jetzt sehe ich, das Problem ist, mit Ihrer login Klasse (mit früheren Frage Formatierung des genaue Fehler war unleserlich). Sie sollten noch einmal schauen, was ist der Name der Datei, wo Sie login Klasse haben und was ist der Name der Klasse. Die Konvention lautet, dass die Datei den Namen Login.php (mit Großbuchstaben) haben sollte und der Name der Klasse auch Login (mit Großbuchstaben) sein sollte. Sie sollten auch überprüfen, in welchem ​​Namensraum Ihre Klasse Login ist. Wenn es in in App Namensraum definiert ist, sollten Sie mit Ihrem LoginTableSeeder hinzufügen:

use App\Login; 

in der nächsten Zeile nach <?php

so dass im Grunde der Anfang Ihrer Datei sollte wie folgt aussehen:

<?php 

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

EARLIER ANSWER

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

In database/seeds/DatabaseSeeder.php sollten Sie Login-Seeder wie folgt ausführen:

$this->call('LoginTableSeeder'); 

Sie am Anfang in database/seeds Datei LoginTableSeeder.php mit Großbuchstaben setzen sollten .

Nun sollte Ihre Datei LoginTableSeeder.php Datei wie folgt aussehen:

<?php 

use Illuminate\Database\Seeder; 

class LoginTableSeeder extends Seeder 
{ 
    public function run() 
    { 

     // your code goes here 
    } 
} 

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

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

+0

Vielen Dank für Ihre Antwort. Ich habe eine Sache verpasst. Ich habe es so benannt loginTableSeeder.php, und ja, ich habe es behoben und jetzt sieht es so aus, LoginTableSeeder.php. Nun, hier ist mein LoginTableSeeder.php Code. delete(); \t \t Anmeldung :: create (array ( \t \t \t 'username' \t => \t 'sanju', \t \t \t 'Passwort' \t => \t Hash :: machen ('sanju') \t \t \t)); \t} } ?, Aber, es ist noch nicht behoben. –

+0

@samhukiklsk Wie ich bereits erwähnt habe, ist das Problem wahrscheinlich, dass die Seeder-Klasse nicht gefunden wird. Verwenden Sie Illuminate \ Database \ Seeder ;. Zeile in dieser Datei nach '

+0

Soory, Kumpel nicht arbeite für mich. –

0

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

Update-Komponist mit dem Befehl:

$ Komponist selbst Update

Hoffe, dass es anderen helfen können.

0

Ich habe das gleiche Problem, aber Sie können es, indem Sie Ihren Namensraum lösen:

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

Führen Sie einfach composer dump-autoload -o für den Autoloader die neu Klassen zu holen, da die Datenbank-Ordner nicht automatisch mit PSR automatisch geladen wird -4. Diese

2

arbeitete für mich

composer dump-autoload -o