Laravel 包含了一个简单方法来填充数据库——使用填充类和测试数据。全部的填充类都位于database/seeds
目录。填充类的类名彻底由你自定义,但最好仍是遵循必定的规则,好比可读性,例如UserTableSeeder
等等。安装完 Laravel 后,会默认提供一个DatabaseSeeder
类。从这个类中,你可使用call
方法来运行其余填充类,从而容许你控制填充顺序。php
要生成一个填充器,能够经过 Artisan 命令make:seeder
。全部框架生成的填充器都位于database/seeders
目录:html
php artisan make:seeder UserTableSeeder
一个填充器类默认只包含一个方法:run
。当Artisan命令db:seed
运行时该方法被调用。在run
方法中,能够插入任何你想插入数据库的数据,你可使用查询构建器手动插入数据,也可使用 Eloquent 模型工厂。laravel
举个例子,让咱们修改 Laravel 安装时自带的DatabaseSeeder
类,添加一个数据库插入语句到run
方法:数据库
<?php use Illuminate\Database\Seeder; use Illuminate\Database\Eloquent\Model; class DatabaseSeeder extends Seeder{ /** * 运行数据库填充 * * @return void */ public function run() { DB::table('users')->insert([ 'name' => str_random(10), 'email' => str_random(10).'@gmail.com', 'password' => bcrypt('secret'), ]); } }
若是是多个表的话,能够添加多个表框架
<?php use Illuminate\Database\Seeder; use App\Models\User; class UserTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { DB::table(User::getModel()->getTable())->delete(); User::create([ 'id' => 1, 'name' => '生活用品', ]); User::create([ 'id' => 2, 'name' => '出差用具', ]); } }
<?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $this->call(UserTableSeeder::class); } }
编写好填充器类以后,可使用 Artisan 命令db:seed
来填充数据库。dom
默认状况下,db:seed
命令运行能够用来运行其它填充器类的DatabaseSeeder
类,post
可是,也可使用--class
选项来指定你想要运行的独立的填充器类:测试
php artisan db:seed php artisan db:seed --class=UserTableSeeder