Laravel 5.2: Unable to locate factory with name [default]

匿名 (未验证) 提交于 2019-12-03 02:20:02

问题:

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!



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!