插件窝 干货文章 Linux中Laravel如何进行数据库迁移

Linux中Laravel如何进行数据库迁移

迁移 table artisan function 761    来源:    2025-05-10

Laravel 数据库迁移指南

基本概念

Laravel 的数据库迁移功能允许你通过 PHP 代码来定义和修改数据库结构,这使得数据库版本控制变得简单且团队协作更加方便。

创建迁移文件

php artisan make:migration create_table_name_table

这会在 database/migrations 目录下创建一个新的迁移文件,文件名包含时间戳和表名。

编写迁移

迁移文件包含 up()down() 方法:

public function up()
{
    Schema::create('table_name', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamps();
    });
}

public function down()
{
    Schema::dropIfExists('table_name');
}

常用字段类型

  • $table->id() - 自增主键
  • $table->string('name') - VARCHAR 类型
  • $table->text('description') - TEXT 类型
  • $table->integer('votes') - INTEGER 类型
  • $table->boolean('confirmed') - BOOLEAN 类型
  • $table->dateTime('created_at') - DATETIME 类型
  • $table->timestamps() - 创建 created_at 和 updated_at 字段

运行迁移

php artisan migrate

回滚迁移

回滚最后一次迁移:

php artisan migrate:rollback

回滚所有迁移:

php artisan migrate:reset

回滚并重新运行所有迁移:

php artisan migrate:refresh

添加字段到已有表

  1. 创建新迁移:
php artisan make:migration add_column_to_table_name_table --table=table_name
  1. 编辑迁移文件:
public function up()
{
    Schema::table('table_name', function (Blueprint $table) {
        $table->string('new_column')->after('existing_column');
    });
}

public function down()
{
    Schema::table('table_name', function (Blueprint $table) {
        $table->dropColumn('new_column');
    });
}

外键约束

$table->foreign('user_id')
      ->references('id')
      ->on('users')
      ->onDelete('cascade');

索引

$table->string('email')->unique();  // 唯一索引
$table->index('column_name');      // 普通索引

迁移状态

查看已运行和未运行的迁移:

php artisan migrate:status

生产环境注意事项

  1. 在运行迁移前备份数据库
  2. 避免在生产环境直接修改迁移文件
  3. 考虑使用 --force 选项在生产环境运行迁移:
php artisan migrate --force

最佳实践

  1. 每个迁移只做一件事
  2. 为迁移编写清晰的回滚方法
  3. 使用有意义的迁移名称
  4. 在团队中保持迁移顺序一致

通过以上方法,你可以有效地使用 Laravel 的数据库迁移功能来管理数据库结构变更。