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