2016-04-05 9 views
10

I Samen wollen Datenbank , wenn ich diese verwendenLaravel 5.2: Kann nicht ab Werk mit dem Namen suchen [Standard]

public function run() 
{ 
    $users = factory(app\User::class, 3)->create(); 
} 

in der Datenbank drei Benutzer hinzufügen, aber wenn ich diese

public function run() 
{ 
    $Comment= factory(app\Comment::class, 3)->create(); 
} 

anzeigen me error

[InvalidArgumentException]
Unable Fabrik mit Namen suchen [Defau lt] [App \ Kommentar].

+0

Sind die Namen und Namespaces korrekt? Gibt es Klassen wirklich? –

+1

Sollte das nicht "App" anstatt "App" sein? Die Fehlermeldung lautet "Commnet". Wenn Sie also den obigen Code kopieren, kommt der Fehler von woanders. –

+0

Es tut mir leid. Ich kopiere falsch. Ich bearbeite meinen Beitrag – paranoid

Antwort

17

Standardmäßig wird die Laravel-Installation mit diesem Code in der Datei database/factories/ModelFactory.php geliefert.

Sie müssen also ein Factory-Modell definieren, bevor Sie es zur Seed-Datenbank verwenden. Dies verwendet nur eine Instanz von Faker Library, die verwendet wird, um gefälschte Daten zum Seeding der Datenbank zu generieren, um Tests durchzuführen.

Stellen Sie sicher, dass Sie eine ähnliche Modal Factory für das Kommentarmodell hinzugefügt haben.

So wird Ihre Kommentare Modellfabrik so etwas wie dieses:

$factory->define(App\Comment::class, function (Faker\Generator $faker) { 
    return [ 
     'comment' => $faker->sentence, 
     // Any other Fields in your Comments Model 
    ]; 
}); 
+2

Und wenn Sie 'line 129' in https://github.com/illuminate/database/blob/master/Eloquent/FactoryBuilder.php betrachten, werden Sie sehen, warum @Angry Coder richtig ist. Im Moment gibt es keine Definition für Ihre Kommentarklasse. – Ben

8

Dies auch passieren kann, wenn Sie den Befehl factory()->create() von php artisan tinker ausgeführt werden. Stellen Sie sicher, dass Sie die Datei speichern database/factories/ModelFactory.php vor dem Öffnen basteln

1

1º Schritt - Stellen Sie sicher, dass CommentFactory Comment anstelle von Model verwendet.

use App\Comment 
... 

    $factory->define(Comment::class, function (Faker $faker){ 

2e Schritt - Stellen Sie sicher, dass die Namen in CommentsTableSeeder korrekt sind.

use App\Comment 
... 

public function run() 
{ 
    factory(Comment::class, 3)->create(); 
} 

Viel Glück!