Laravel 5.2數據庫--填充數據

一、簡介

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
相關文章
相關標籤/搜索