国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

數(shù)據(jù)庫(kù) ―― 填充數(shù)據(jù)

2018-02-24 15:38 更新

數(shù)據(jù)庫(kù) —— 填充數(shù)據(jù)

1、簡(jiǎn)介

Laravel包含了一個(gè)簡(jiǎn)單方法來(lái)填充——使用填充類(lèi)和測(cè)試數(shù)據(jù)。所有的填充類(lèi)都位于database/seeds目錄。填充類(lèi)的類(lèi)名完全由你自定義,但最好還是遵循一定的規(guī)則,比如可讀性,例如UserTableSeeder等等。安裝完Laravel后,會(huì)默認(rèn)提供一個(gè)DatabaseSeeder類(lèi)。從這個(gè)類(lèi)中,你可以使用call方法來(lái)運(yùn)行其他填充類(lèi),從而允許你控制填充順序。

2、編寫(xiě)填充器

要生成一個(gè)填充器,可以通過(guò)Artisan命令make:seeder。所有框架生成的填充器都位于database/seeders目錄:

php artisan make:seeder UserTableSeeder

一個(gè)填充器類(lèi)默認(rèn)只包含一個(gè)方法:run。當(dāng)Artisan命令db:seed運(yùn)行時(shí)該方法被調(diào)用。在run方法中,可以插入任何你想插入數(shù)據(jù)庫(kù)的數(shù)據(jù),你可以使用查詢構(gòu)建器手動(dòng)插入數(shù)據(jù),也可以使用Eloquent模型工廠

舉個(gè)例子,讓我們修改Laravel安裝時(shí)自帶的DatabaseSeeder類(lèi),添加一個(gè)數(shù)據(jù)庫(kù)插入語(yǔ)句到run方法:

<?php

use DB;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder{
    /**
     * 運(yùn)行數(shù)據(jù)庫(kù)填充
     *
     * @return void
     */
    public function run()
    {
        DB::table('users')->insert([
            'name' => str_random(10),
            'email' => str_random(10).'@gmail.com',
            'password' => bcrypt('secret'),
        ]);
    }
}

2.1 使用模型工廠

當(dāng)然,手動(dòng)指定每一個(gè)模型填充的屬性是很笨重累贅的,取而代之的,我們可以使用模型工廠來(lái)方便的生成大量的數(shù)據(jù)庫(kù)記錄。首先,查看模型工廠文檔來(lái)學(xué)習(xí)如何定義工廠,定義工廠后,可以使用幫助函數(shù)factory來(lái)插入記錄到數(shù)據(jù)庫(kù)。

舉個(gè)例子,讓我們創(chuàng)建50個(gè)用戶并添加關(guān)聯(lián)關(guān)系到每個(gè)用戶:

/**
 * 運(yùn)行數(shù)據(jù)庫(kù)填充
 *
 * @return void
 */
public function run(){
    factory('App\User', 50)->create()->each(function($u) {
        $u->posts()->save(factory('App\Post')->make());
    });
}

2.2 調(diào)用額外的填充器

DatabaseSeeder類(lèi)中,你可以使用call方法執(zhí)行額外的填充類(lèi),使用call方法允許你將數(shù)據(jù)庫(kù)填充分解成多個(gè)文件,這樣單個(gè)填充器類(lèi)就不會(huì)變得無(wú)比巨大,只需簡(jiǎn)單將你想要運(yùn)行的填充器類(lèi)名傳遞過(guò)去即可:

/**
 * 運(yùn)行數(shù)據(jù)庫(kù)填充
 *
 * @return void
 */
public function run(){
    Model::unguard();

    $this->call(UserTableSeeder::class);
    $this->call(PostsTableSeeder::class);
    $this->call(CommentsTableSeeder::class);
}

3、運(yùn)行填充器

編寫(xiě)好填充器類(lèi)之后,可以使用Artisan命令db:seed來(lái)填充數(shù)據(jù)庫(kù)。默認(rèn)情況下,db:seed命令運(yùn)行可以用來(lái)運(yùn)行其它填充器類(lèi)的DatabaseSeeder類(lèi),但是,你也可以使用--class?選項(xiàng)來(lái)指定你想要運(yùn)行的獨(dú)立的填充器類(lèi):

php artisan db:seed
php artisan db:seed --class=UserTableSeeder

你還可以使用migrate:refresh命令來(lái)填充數(shù)據(jù)庫(kù),該命令還可以回滾并重新運(yùn)行遷移,這在需要完全重建數(shù)據(jù)庫(kù)時(shí)很有用:

php artisan migrate:refresh --seed
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)