2016-04-05 13 views
10

voglio seminare banca dati quando uso questolaravel 5.2: Impossibile individuare fabbrica con nome [predefinito]

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

aggiungere tre utenti nel database, ma quando uso questo

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

Visualizza mi errore

[InvalidArgumentException]
Impossibile individuare fabbrica con nome [Sottotito lt] [app \ Comment].

+0

I nomi e gli spazi dei nomi sono corretti? Le classi esistono davvero? –

+1

Non dovrebbe essere "App" piuttosto che "app"? Inoltre, il messaggio di errore dice "Commnet", quindi se copi davvero il codice precedente, l'errore viene da qualcos'altro. –

+0

Mi dispiace. Copio male. Modifica il mio post – paranoid

risposta

17

Per impostazione predefinita, l'installazione di laravel viene fornita con questo codice nel file database/factories/ModelFactory.php.

$factory->define(App\User::class, function (Faker\Generator $faker) { 
    return [ 
     'name' => $faker->name, 
     'email' => $faker->email, 
     'password' => bcrypt(str_random(10)), 
     'remember_token' => str_random(10), 
    ]; 
}); 

Quindi è necessario definire un modello di fabbrica prima di utilizzarlo nel database di seed. Ciò utilizza solo un'istanza di Faker Library che viene utilizzata per generare dati falsi per eseguire il seeding del database per eseguire test.

Assicurarsi di aver aggiunto una Fabbrica modale simile per il modello Commenti.

Così la vostra fabbrica Commenti modello sarà qualcosa di simile:

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

E quando dai un'occhiata a 'line 129' in https://github.com/illuminate/database/blob/master/Eloquent/FactoryBuilder.php vedrai perché @Angry Coder ha ragione. Al momento non esiste una definizione per la tua classe di commenti. – Ben

8

Questo può succedere anche quando si esegue il comando factory()->create() da php artisan tinker. Assicurati di salvare il file database/factories/ModelFactory.php prima di aprire tinker

1

1º Step - Assicurarsi che CommentFactory utilizzi Comment anziché Model.

use App\Comment 
... 

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

2º Step - Verificare che i nomi siano corretti in CommentsTableSeeder.

use App\Comment 
... 

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

Buona fortuna!

Problemi correlati