私はこの
public function run()
{
$users = factory(app\User::class, 3)->create();
}
を使用するときに、データベース をシードしたいが、データベース内の3人のユーザーを追加しますが、私は
[InvalidArgumentException]名前を持つ工場を見つけることができません
[defauをエラーlt [app \ Comment]。
私はこの
public function run()
{
$users = factory(app\User::class, 3)->create();
}
を使用するときに、データベース をシードしたいが、データベース内の3人のユーザーを追加しますが、私は
[InvalidArgumentException]名前を持つ工場を見つけることができません
[defauをエラーlt [app \ Comment]。
デフォルトでは、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
];
});
そして、https://github.com/illuminate/database/blob/master/Eloquent/FactoryBuilder.phpの 'line 129'を見てみると、@Angry Coderが正しい理由がわかります。現時点では、あなたのCommentクラスの定義はありません。 – Ben
あなたはphp artisan tinker
からのコマンドfactory()->create()
を実行しているとき、これにも発生する可能性があります。ファイルdatabase/factories/ModelFactory.php
を保存してからテンキーを開くようにしてください。
1ºステップ - モデルの代わりにCommentFactoryがコメントを使用していることを確認してください。
use App\Comment
...
$factory->define(Comment::class, function (Faker $faker){
2ºステップ - 名がCommentsTableSeederに正しいことを確認します。
幸運!
名前と名前空間は正しいですか?クラスは本当に存在しますか? –
それは 'app'ではなく' App'でしょうか?また、エラーメッセージには 'Commnet'と表示されますので、上記のコードを実際にコピー&ペーストした場合、そのエラーは別の場所から発生します。 –
すみません。私は間違ってコピーします。投稿を編集します – paranoid