可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I want to seed database when I use this
public function run() { $users = factory(app\User::class, 3)->create(); }
Add three user in database but when I use this
public function run() { $Comment= factory(app\Comment::class, 3)->create(); }
Show me error
[InvalidArgumentException]
Unable to locate factory with name [default] [app\Comment].
回答1:
By default the laravel installation comes with this code in the database/factories/ModelFactory.php
File.
$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), ]; });
So you need to define a factory Model before you use it to seed database. This just uses an instance of Faker Library which is used to generate fake Data for seeding the database to perform testing.
Make sure You have added a similar Modal Factory for the Comments Model.
So your Comments Model Factory will be something like this :
$factory->define(App\Comment::class, function (Faker\Generator $faker) { return [ 'comment' => $faker->sentence, // Any other Fields in your Comments Model ]; });
回答2:
This can also happen when you are running the command factory()->create()
from php artisan tinker
. Make sure you save the file database/factories/ModelFactory.php
before opening tinker
回答3:
I'm using laravel 5.5 and for that doing this is bit different. You have to create CommentFactory.php inside \database\factories directory and add this inside,
$factory->define(App\Comment::class, function (Faker\Generator $faker) { return [ 'comment' => $faker->sentence, // Any other Fields in your Comments Model ]; });
And add this,
$Comment= factory(\App\Comment::class, 3)->create();
instead of
$Comment= factory(app\Comment::class, 3)->create();
I just wanted to add this since I'm facing the same issue for later version and this thread helped me a lot to fix it.
回答4:
use App\Comment ... $factory->define(Comment::class, function (Faker $faker){
use App\Comment ... public function run() { factory(Comment::class, 3)->create(); }
Good luck!