# 数据迁移

数据迁移有以下好处:多人并行开发、代码版本管理、数据库版本控制、兼容多种数据库、部署方便。

# 生成迁移

php artisan make:migration create_users_table --path=database/migrations/users

# 整合迁移

php artisan schema:dump

# 转储当前数据库架构并删除所有现有迁移
php artisan schema:dump --prune

# 设置数据连接和表选项

下面只是罗列平常用到的,如弱深究,可以查看源码

// 添加连接属性
protected $connection = 'other_connection';

// 除了上面设置的属性,还可以使用以下方式
Schema::connection('sqlite')->create('users', function (Blueprint $table) {
    // engine 属性指定表的存储引擎
    $table->engine = 'InnoDB';

    // 指定字符集
    $table->charset = 'utf8mb4';

    // 指定排序规则 
    $table->collation = 'utf8mb4_unicode_ci';

    // 添加标注释
    $table->comment('Business calculations');

    $table->id();

    // 外检约束
    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

    .
    .
    .


});


// Laravel 默认会自动将数据表名称、索引的字段名及索引类型简单地连接在一起作为名称。

// 删除 'geo_state_index' 索引
$table->dropIndex('geo_state_index');
$table->dropIndex(['state']); 

$table->dropForeign('posts_user_id_foreign');
$table->dropForeign(['user_id']);

# 执行迁移


php artisan migrate

php artisan migrate:status

php artisan migrate:rollback

php artisan migrate:rollback --step=5

php artisan migrate:reset

php artisan migrate:refresh

php artisan migrate:refresh --seed