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

2018-12-17 10:59 更新

介紹

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

           

建立遷移文件

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

php artisan make:migration create_users_table

           

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

--table--create 參數(shù)可以用來指定數(shù)據(jù)表名稱,以及遷移文件是否要建立新的數(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 可以簡單的使用 seed 類,填充測試數(shù)據(jù)到數(shù)據(jù)庫。所有的 seed 類放在 database/seeds 目錄下??梢允褂萌魏文阆胍念惷Q,但是應(yīng)該遵守某些大小寫規(guī)范,如 UserTableSeeder 之類。默認(rèn)已經(jīng)有一個(gè) DatabaseSeeder 類。在這個(gè)類里,使用 call 方法執(zhí)行其他的 seed 類,讓你控制填充的順序。

Seed 類例子

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(['email' => 'foo@bar.com']);
    }}

           

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

php artisan db:seed

           

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

php artisan db:seed --class=UserTableSeeder

           

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

php artisan migrate:refresh --seed


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號