## 数据迁移
在 `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 # 删除所有表并迁移