1、简介

迁移就像数据库的版本控制,允许团队简单轻松的编辑并共享应用的数据库表结构,迁移通常和Laravel的结构构建器结对从而可以很容易地构建应用的数据库表结构。

Laravel的​​Schema​​门面提供了与数据库系统无关的创建和操纵表的支持,在Laravel所支持的所有数据库系统中提供一致的、优雅的、平滑的API。

2、生成迁移

使用Artisan命令​​make:migration​​来创建一个新的迁移:



php artisan make:migration create_users_table


新的迁移位于​​database/migrations​​目录下,每个迁移文件名都包含时间戳从而允许Laravel判断其顺序。

​--table​​和​​--create​​选项可以用于指定表名以及该迁移是否要创建一个新的数据表。这些选项只需要简单放在上述迁移命令后面并指定表名:



php artisan make:migration add_votes_to_users_table --table=users
php artisan make:migration create_users_table --create=users


如果你想要指定生成迁移的自定义输出路径,在执行​​make:migration​​命令时可以使用​​--path​​选项,提供的路径应该是相对于应用根目录的。

3、迁移结构

迁移类包含了两个方法:​​up​​和​​down​​。​​up​​方法用于新增表,列或者索引到数据库,而​​down​​方法就是​​up​​方法的反操作,和​​up​​里的操作相反。

在这两个方法中你都要用到Laravel的表结构构建器来创建和修改表,想要学习​​Schema​​构建器的更多有用方法,可以查看其文档。例如,让我们先看看创建​​flights​​表的简单示例:



<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateFlightsTable extends Migration{
/**
* 运行迁移
*
* @return void
*/
public function up()
{
Schema::create('flights', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('airline');
$table->timestamps();
});
}

/**
* 撤销迁移
*
* @return void
*/
public function down()
{
Schema::drop('flights');
}
}


4、运行迁移

要运行应用中所有未执行的迁移,可以使用Artisan命令的​​migrate​​方法。如果你正在使用Homestead虚拟机,应该在你的虚拟机中运行如下这条命令:



php artisan migrate


如果再运行时遇到”class not found“的错误提示,尝试运行​​composer dump-autoload​​命令然后重新运行迁移命令。

在生产环境中强制运行迁移

有些迁移操作是毁灭性的,这意味着它们可能造成数据的丢失,为了避免在生产环境数据库中运行这些命令,你将会在运行这些命令之前被提示并确认。想要强制运行这些命令而不被提示,可以使用​​--force​​:



php artisan migrate --force


4.1 回滚迁移

想要回滚最新的一次迁移”操作“,可以使用​​rollback​​命令,注意这将会回滚最后一批运行的迁移,可能包含多个迁移文件:



php artisan migrate:rollback


​migrate:reset​​命令将会回滚所有的应用迁移:



php artisan migrate:reset


4.1.1 在单个命令中回滚/迁移

​migrate:refresh​​命令将会先回滚所有数据库迁移,然后运行​​migrate​​命令。这个命令可以有效的重建整个数据库:



php artisan migrate:refresh
php artisan migrate:refresh --seed


 

laravel数据库——迁移_laravel数据库