laravel工厂模式填充数据(laravel7.x)
laravel可以用seed类填充测试数据,所有的seed类存放在database/seeds文件下;
1、编写seeders
php artisan make:seeder UserSeeder;
2、创建一个生成模型的工厂,工厂的位置在database/factories目录下
php artisan make:factory UserFactory;
3、编辑工厂 只需要修改return中的值
use Illuminate\Support\Str;
use Faker\Generator as Faker;
$factory->define(\App\Models\User::class, function (Faker $faker) {
return [
'name' => $faker->userName,
//此处user_id的值不能写成factory(App\Models\User::class);会报错Segmentation fault (core dumped);意思是内存越界
'user_id' => $faker->randomDigit,
'invitecode' => Str::random(6)
];
});
3.使用工厂 在控制器中使用
public function run()
{
factory(\App\Models\User::class,10)->create();//数据会插入数据库
factory(\App\Models\User::class,10)->make();//查看 make 不插入数据库
}
4、模型工厂值类型列表
【Laravel 】faker数据填充详解:https://github.com/fzaninotto/Faker
5、运行 Seeders#
完成 seeder 类的编写之后,需要使用 dump-autoload
命令重新生成 Composer 的自动加载器:
composer dump-autoload
6、现在你可以使用 Artisan 命令 db:seed
来填充数据库了。默认情况下, db:seed
命令将运行 DatabaseSeeder
类,这个类可以用来调用其它 Seed 类。不过,你也可以使用 --class
选项来指定一个特定的 seeder 类:
php artisan db:seed //如果在 DatabaseSeeder 类中,用 call 方法来运行其它的 seed 类,可以直接用该命令
php artisan db:seed --class=UserSeeder //指定的seed类用这个