2016-04-05 13 views
10

私はこの

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

を使用するときに、データベース をシードしたいが、データベース内の3人のユーザーを追加しますが、私は

[InvalidArgumentException]名前を持つ工場を見つけることができません
[defauをエラーlt [app \ Comment]。

+0

名前と名前空間は正しいですか?クラスは本当に存在しますか? –

+1

それは 'app'ではなく' App'でしょうか?また、エラーメッセージには 'Commnet'と表示されますので、上記のコードを実際にコピー&ペーストした場合、そのエラーは別の場所から発生します。 –

+0

すみません。私は間違ってコピーします。投稿を編集します – paranoid

答えて

17

デフォルトでは、laravelのインストールでは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), 
    ]; 
}); 

したがって、データベースをシードする前にファクトリモデルを定義する必要があります。 これは、Faker Libraryのインスタンスを使用しています。このインスタンスは、データベースをシードしてテストを実行するための偽データを生成するために使用されます。

コメントモデルにも同様のModal Factoryが追加されていることを確認してください。

だからあなたのコメントモデルの工場出荷時には、このようなものになります。

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

そして、https://github.com/illuminate/database/blob/master/Eloquent/FactoryBuilder.phpの 'line 129'を見てみると、@Angry Coderが正しい理由がわかります。現時点では、あなたのCommentクラスの定義はありません。 – Ben

8

あなたはphp artisan tinkerからのコマンドfactory()->create()を実行しているとき、これにも発生する可能性があります。ファイルdatabase/factories/ModelFactory.phpを保存してからテンキーを開くようにしてください。

1

1ºステップ - モデルの代わりにCommentFactoryがコメントを使用していることを確認してください。

use App\Comment 
... 

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

2ºステップ - 名がCommentsTableSeederに正しいことを確認します。

幸運!

関連する問題

 関連する問題