跳转到主要内容

什么是迁移

迁移就像是数据库的版本控制。 团队可以共享和管理应用的数据库结构定义。 你或许有过在拉取代码后被要求「请在本地数据库手动加一列」的经历。迁移正好解决了这类问题。 迁移文件存放在 database/migrations 目录,文件名包含时间戳,Laravel 据此决定执行顺序。

创建迁移文件

使用 make:migration Artisan 命令:
Laravel 会根据迁移名推测表名并生成合适的骨架。create_posts_table 就会预置创建 posts 表的代码。

迁移结构

迁移类包含 updown 两个方法:
  • up:向数据库添加表、列、索引。
  • down:撤销 up 的操作,用于回滚。

常见列定义方法

Blueprint 类内置多种列类型。

列修饰符

可以链式添加修饰符:

执行迁移

migrate 命令运行未执行的迁移。
查看执行情况:
在生产环境执行迁移会出现确认提示。若需跳过可加 --force,但因为有可能丢失数据请谨慎操作。

回滚

回滚最近一次迁移批次:
按步数回滚:
回滚全部并重新运行:
migrate:refresh 会重建所有表,既有数据会丢失,适合开发中的数据库重置。

实战示例:创建 posts 表

以博客文章的 posts 表为例。

1. 生成迁移

2. 编辑迁移

打开 database/migrations/xxxx_xx_xx_xxxxxx_create_posts_table.php

3. 执行迁移

数据库中会创建 posts 表。

4. 后期追加列

后期添加列时不要修改已有迁移,而是新建迁移:
尽量不要修改已存在的迁移文件,否则会破坏与其他成员或生产环境的一致性。所有更改都以新迁移的形式添加。

迁移事件

每次迁移操作会派发事件,都继承 Illuminate\Database\Events\MigrationEvent 例如可监听 MigrationsEnded 在迁移完成后清理缓存:

下一步

数据库填充

了解如何为迁移创建的表填充示例数据。

Eloquent 入门

学习通过 Eloquent ORM 操作迁移创建的表。
最后修改于 2026年7月18日