53

これを使用するときにデータベースをシードしたい

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

データベースに3人のユーザーを追加しますが、これを使用すると

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

エラーを表示

[InvalidArgumentException]
[デフォルト] [app\Comment] という名前のファクトリが見つかりません。

4

15 に答える 15

48

デフォルトでは、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のインスタンスを使用するだけです。

コメント モデルに同様のモーダル ファクトリを追加したことを確認します。

したがって、コメント モデル ファクトリは次のようになります。

$factory->define(App\Comment::class, function (Faker\Generator $faker) {
    return [
        'comment' => $faker->sentence,
         // Any other Fields in your Comments Model 
    ];
});
于 2016-04-05T09:30:35.147 に答える
3

これは、キャッシュの問題である可能性があります。次のコマンドを実行して解決できます。

php artisan clear-compiled
composer dump-autoload
php artisan optimize
于 2019-06-02T06:23:05.450 に答える