当我们创建好表结构后 通常都要生成一些测试用的数据来测试,应对这个场景呢 Laravel提供了相当好的服务 --seed
Laravel的seeder都会放在:/database/seeders 目录中,并且会提供一个DatabaseSeeder 在DatabaseSeeder的run方法中你可以调用其他你创建的seeder
1 创建一个Seeder
运行artisan创建:
php artisan make:seeder ArticlesSeeder
1.1 使用构建器填充
seeder中只有一个run方法 我们可以在run方法中执行我们的插入方法 在run中可以用构建器 也可以用模型工厂(关于这两点后续会写到哦)
public function run() { DB::table('articles')->insert([ 'title' => str_random(20), 'body' => str_random(200), ]); }
1.2 使用模型工厂填充(常用)
public function run() { factory(AppUser::class, 10)->create(); }
这样就创建了10个用户。
2 执行填充器
2.1 指定执行
比如说 咱就执行 ArticlesSeeder 这个填充器 可以这样写:
php artisan db:seed --class=ArticlesSeeder
2.2 默认执行
默认执行就是执行 DatabaseSeeder 这个填充器:
php artisan db:seed
2.3 调用自定义填充器
如果执行了 DatabaseSeeder 填充器,要不就在它的run方法中实现数据填充,要不就调用自定义填充器:
class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { Model::unguard(); $this->call('ArticlesSeeder'); Model::reguard(); } }
然后运行:
php artisan db:seed