一、简介
Laravel提供的填充类(seed),可以让大家很容易的实现填充测试数据到数据库。所有的填充类都位于database/seeds目录。填充类的类名完全由你自定义,但最好还是遵循一定的规则,比如可读性,例如UsersTableSeeder等。
下面以创建学生表的填充为例,来介绍Laravel中数据填充的使用。(点击查看演示数据表结构)
二、建立填充文件
1. 使用Artisan的 make:seeder 命令生成students表的填充文件:
php artisan make:seeder StudentsTableSeeder
将会在database/seeds目录下生成一个StudentsTableSeeder.php填充文件。
2. 插入填充代码
打开该文件后,有一个StudentsTableSeeder的类,里面有个run()方法。在run方法中可以插入任何你想插入的数据,可以使用查询构建器手动插入数据,也可以使用 Eloquent 模型工厂。
下面以使用查询构造器为例,完整代码如下:
<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class StudentsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// 使用查询构造器
DB::table('students')->insert([
['name' => 'sean', 'age' => 18, 'sex' => 20],
['name' => 'chen', 'age' => 20, 'sex' => 30],
]);
}
}
三、执行填充文件
1. 执行单个填充文件
php artisan db:seed --class=StudentsTableSeeder
2. 批量执行填充文件
使用批量填充文件,需要在database/seeds/DatabaseSeeder类的run()方法中,将你想要运行的填充器类名传递过去即可:
public function run()
{
$this->call(StudentsTableSeeder::class);
// $this->call(UsersTableSeeder::class);
// 以及其它填充类
}
然后执行如下命令:
php artisan db:seed
这样既可添加测试数据到students表中。