鍍金池/ 教程/ PHP/ 遷移與數(shù)據(jù)填充
Laravel Cashier
Eloquent ORM
HTTP 響應(yīng)
發(fā)行說(shuō)明
擴(kuò)展包開(kāi)發(fā)
HTTP 控制器
事件
擴(kuò)展框架
Contracts
開(kāi)發(fā)
配置
表單驗(yàn)證
錯(cuò)誤與日志
Hashing
貢獻(xiàn)指南
郵件
Session
遷移與數(shù)據(jù)填充
查詢(xún)構(gòu)造器
Redis
升級(jí)向?qū)?/span>
概覽
緩存
服務(wù)提供者
Envoy 任務(wù)執(zhí)行器
隊(duì)列
單元測(cè)試
服務(wù)容器
文件系統(tǒng) / 云存儲(chǔ)
認(rèn)證
請(qǐng)求的生命周期
加密
模板
視圖 (View)
Laravel Homestead
Laravel 安裝指南
介紹
Command Bus
分頁(yè)
輔助方法
應(yīng)用程序結(jié)構(gòu)
HTTP 路由
HTTP 請(qǐng)求
基本用法
本地化
HTTP 中間件
結(jié)構(gòu)生成器
Facades
Laravel Elixir

遷移與數(shù)據(jù)填充

介紹

遷移是一種數(shù)據(jù)庫(kù)的版本控制。可以讓團(tuán)隊(duì)在修改數(shù)據(jù)庫(kù)結(jié)構(gòu)的同時(shí),保持彼此的進(jìn)度一致。遷移通常會(huì)和 結(jié)構(gòu)生成器 一起使用,可以簡(jiǎn)單的管理數(shù)據(jù)庫(kù)結(jié)構(gòu)。

建立遷移文件

使用 Artisan CLI 的 make:migrate 命令建立遷移文件:

php artisan make:migration create_users_table

遷移文件會(huì)建立在 database/migrations 目錄下,文件名會(huì)包含時(shí)間戳記,在執(zhí)行遷移時(shí)用來(lái)決定順序。

你也可以在建立遷移命令加上 --path 參數(shù)。路徑要相對(duì)于應(yīng)用程序所在的根目錄。

php artisan make:migration foo --path=app/migrations

--table--create 參數(shù)可以用來(lái)指定數(shù)據(jù)表名稱(chēng),以及遷移文件是否要建立新的數(shù)據(jù)表。

php artisan make:migration add_votes_to_users_table --table=users

php artisan make:migration create_users_table --create=users

執(zhí)行遷移

執(zhí)行所有未執(zhí)行的遷移

php artisan migrate

注意: 如果在執(zhí)行遷移時(shí)發(fā)生「class not found」錯(cuò)誤,試著先執(zhí)行composer dump-autoload 命令后再進(jìn)行一次。

在線上環(huán)境 (Production) 中強(qiáng)制執(zhí)行遷移

有些遷移操作是具有破壞性的,意味著可能讓你遺失原本保存的數(shù)據(jù)。為了防止你在上線環(huán)境執(zhí)行到這些遷移命令,你會(huì)被提示要在執(zhí)行遷移前進(jìn)行確認(rèn)。加上--force 參數(shù)執(zhí)行強(qiáng)制遷移:

php artisan migrate --force

回滾遷移

回滾上一次的遷移

php artisan migrate:rollback

回滾所有遷移

php artisan migrate:reset

回滾所有遷移并且再執(zhí)行一次

php artisan migrate:refresh

php artisan migrate:refresh --seed

數(shù)據(jù)填充

Laravel 可以簡(jiǎn)單的使用 seed 類(lèi),填充測(cè)試數(shù)據(jù)到數(shù)據(jù)庫(kù)。所有的 seed 類(lèi)放在database/seeds 目錄下??梢允褂萌魏文阆胍念?lèi)名稱(chēng),但是應(yīng)該遵守某些大小寫(xiě)規(guī)范,如UserTableSeeder 之類(lèi)。默認(rèn)已經(jīng)有一個(gè)DatabaseSeeder 類(lèi)。在這個(gè)類(lèi)里,使用call 方法執(zhí)行其他的 seed 類(lèi),讓你控制填充的順序。

Seed 類(lèi)例子

class DatabaseSeeder extends Seeder {

    public function run()
    {
        $this->call('UserTableSeeder');

        $this->command->info('User table seeded!');
    }

}

class UserTableSeeder extends Seeder {

    public function run()
    {
        DB::table('users')->delete();

        User::create(array('email' => 'foo@bar.com'));
    }

}

要執(zhí)行數(shù)據(jù)填充,可以使用 Artisan CLI 的db:seed 命令:

php artisan db:seed

默認(rèn)db:seed 命令會(huì)執(zhí)行DatabaseSeeder,可以使用它來(lái)調(diào)用其他 seed 類(lèi),不過(guò),也可以使用--class 參數(shù)指定要單獨(dú)執(zhí)行的類(lèi):

php artisan db:seed --class=UserTableSeeder

你也可以使用migrate:refresh 命令填充數(shù)據(jù),它會(huì)回滾并且再次執(zhí)行所有遷移:

php artisan migrate:refresh --seed
上一篇:加密下一篇:Contracts