本節涉及以下目錄或文件:
> * database/migrations
[TOC]
## 遷移文件創建
### 創建遷移文件:Artisan 命令 `make:migration`
~~~shell
$ php artisan make:migration create_users_table
~~~
>[info] 所有創建的遷移文件都被統一放在 `database/migrations` 目錄中。
> 每個遷移文件的名稱都包含了一個 `時間戳`,以便讓 Laravel 確認遷移的順序。
### 創建選項
#### 指定數據表的名稱:`--table` 和 `--create` 選項
~~~shell
$ php artisan make:migration create_users_table --create=users
$ php artisan make:migration add_votes_to_users_table --table=users
~~~
#### 指定自定義輸出路徑: `--path` 選項
>[warning] 提供的路徑必須是相對于應用程序的基本路徑。
## 遷移文件結構
打開 `database/migrations` 文件夾可以看到,Laravel 已默認創建好了兩個遷移文件:
* database/migrations/2014_10_12_000000_create_users_table.php —— 用于構建 `users` 用戶表
* database/migrations/2014_10_12_100000_create_password_resets_table.php —— 用于構建密碼重置表
> 打開遷移實例 `database/migrations/2014_10_12_000000_create_users_table.php`
~~~php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
* 運行數據庫遷移
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id'); // 由 increments 方法創建了一個 integer 類型的自增長 id。
$table->string('name'); // 由 string 方法創建了一個 name 字段,用于保存用戶名稱。
$table->string('email')->unique(); // 由 string 方法創建了一個 email 字段,且在最后指定該字段的值為唯一值,用于保存用戶郵箱。
$table->string('password', 60); // 由 string 方法創建了一個 password 字段,且在 string 方法中指定保存的值最大長度為 60,用于保存用戶密碼。
$table->rememberToken(); // 由 rememberToken 方法為用戶創建一個 remember_token 字段,用于保存『記住我』的相關信息。
$table->timestamps(); // 由 timestamps 方法創建了一個 created_at 和一個 updated_at 字段,分別用于保存用戶的創建時間和更新時間。
});
}
/**
* Reverse the migrations.
* 回滾數據庫遷移
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
~~~
可見里面定義了一個 `CreateUsersTable` 類,并繼承自 `Migration` 基類。
`CreateUsersTable` 有兩個方法:
1. 運行遷移時調用的 `up` 方法:為數據庫添加新的數據表、字段或索引。
2. 回滾遷移時調用的`down` 方法: `up` 方法的逆操作。
可以在這兩個方法中使用 [結構生成器](database/schema.md) 來創建或修改數據表。
## 遷移文件運行
### 運行所有未運行過的遷移:Artisan 命令 `migrate`
~~~shell
$ php artisan migrate
~~~
#### 強制運行:`--force` 選項
一些遷移的操作是具有破壞性的,它們可能會導致數據丟失。
為了保護線上環境的數據庫,系統會在這些命令被運行之前顯示確認提示。
若要忽略此提示并強制運行命令,則可以使用 `--force` 標記:
~~~shell
$ php artisan migrate --force
~~~
## 遷移文件回滾
### 回滾最后一次遷移:Artisan 命令 `migrate:rollback`
~~~shell
$ php artisan migrate:rollback
~~~
>[warning] 此命令是對上一次執行的「批量」遷移回滾,其中可能包括多個遷移文件。
#### 限制步數:`--step` 選項
~~~shell
$ php artisan migrate:rollback --step=5
~~~
> 此命令將會回滾最后的 5 個遷移。
### 回滾所有的遷移:Artisan 命令 `migrate:reset`
~~~shell
$ php artisan migrate:reset
~~~
### 回滾后重新運行遷移:Artisan 命令 `migrate:refresh`
~~~shell
$ php artisan migrate:refresh
// 刷新數據庫結構并執行數據填充
$ php artisan migrate:refresh --seed
~~~
>[info] 此命令不僅會回滾數據庫的**所有**遷移,還會接著運行 `migrate` 命令,所以可以有效的重新創建整個數據庫。
#### 限制步數:`--step` 選項
~~~shell
$ php artisan migrate:refresh --step=5
~~~
> 回滾并再遷移最后的 5 個遷移。
- 日常命令
- 第一章 開發環境部署
- 第一節 安裝 VirtualBox
- 第二節 安裝 Vagrant
- 第三節 安裝 Git for Windows
- 命令行提示符的寫作約定
- Git Bash 使用技巧
- 第四節 安裝和配置 Homestead
- 第五節 啟動 Homestead 虛擬機
- 第六節 創建 Laravel 應用
- 第七節 使用 Git 進行版本控制
- 總結 本章命令概覽
- 第二章 前端工作流
- 第一節 Yarn 安裝前端擴展包
- 第二節 Laravel Mix 前端資源編譯
- (1)配置 webpack.mix.js 指定 Mix 任務
- (2)修改 resources/assets 前端資源文件
- (3)運行 Mix 任務編譯和監控代碼
- 總結 本章命令概覽
- 第三章 數據庫
- 第一節 Config 數據庫配置信息
- 第二節 Migrations 數據庫遷移文件
- 第三節 Schema 數據庫結構生成器
- (1) 數據表操作
- (2) 字段操作
- (3) 索引操作
- 第四節 Seeding 數據填充
- 第五節 DB 數據庫查詢構建器
- (1)獲取結果集