## 數據遷移
在 `Laravel` 能使用原生 SQL、流暢的查詢構造器,和 Eloquent ORM 在各種數據庫后臺與數據庫進行非常簡單的交互。當前 Laravel 支持四種數據庫:
* MySQL
* PostgreSQL
* SQLite
* SQL Server
### 配置
數據庫的配置文件放置在 `config/database.php` 文件中,你可以在這個文件中定義所有的數據庫連接,并指定默認使用的數據庫。數據庫的鏈接配置放在 `.env` 文件中。
```
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
```
### 數據遷移
遷移就像是數據庫的版本控制,允許團隊簡單輕松的編輯并共享應用的數據庫表結構,如果你曾經手動在數據庫結構中修改字段,如果項目其他環境又得重新修改一次,有了數據遷移就不再需要做這樣的事情。
使用 `Artisan` 命令 `make:migration` 來創建遷移。
```
php artisan migrate
```
### 生成遷移
使用 `Artisan`命令 `make:migration` 來創建遷移:
```
php artisan make:migration create_projects_table
```
新的遷移位于 `database/migrations` 目錄下。每個遷移文件名都包含時間戳,以便讓 Laravel 確認遷移的順序。
遷移類通常會包含2個方法: `up` 和 `down`。 `up` 方法用于添加新的數據表, 字段或者索引到數據庫, 而 `down` 方法是刪除數據表。
下面我們簡單創建字段:
```php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProjectsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('projects', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->string('description');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('projects');
}
}
```
### 回滾遷移
若要回滾最后一次遷移, 可以使用 `rollback` 命令。 此命令將回滾最后一次“遷移”的操作:
```
php artisan migrate:rollback
```
> `php artisan migrate:rollback` 命令會執行 `down` 方法,如果注釋掉將不會回滾遷移
### 刪除所有表并遷移
`migrate:fresh` 命令會從數據庫中刪除所有表:
```
php artisan migrate:fresh
```
### 總結
本節主要介紹數據庫配置及遷移數據庫命令操作:
* php artisan make:migration create_projects_table # 生成遷移文件
* php artisan migrate:rollback # 回滾遷移
* php artisan migrate:fresh # 刪除所有表并遷移