Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势

发布时间 - 2025-12-06 00:00:00    点击率:
Laravel迁移可版本化管理数据库结构,通过Artisan命令创建、执行和回滚迁移文件,实现多环境结构同步;使用make:migration生成文件,up()定义变更、down()回滚,配合migrate等命令操作;结合Seeder填充测试数据,提升团队协作与部署稳定性。

Laravel 的数据库迁移(Migration)功能是管理数据库结构的利器,它让你像版本控制代码一样管理数据库变更。通过命令行创建和执行迁移文件,可以轻松在不同环境中同步表结构,避免手动修改带来的不一致问题。

创建迁移文件

使用 Artisan 命令快速生成迁移文件:

php artisan make:migration create_users_table

如果需要附带模式定义,可加上 --create--table 参数:

  • php artisan make:migration create_posts_table --create=posts:会自动生成带有基础字段的骨架
  • php artisan make:migration add_email_to_users_table --table=users:用于修改已有表

编写迁移逻辑

每个迁移文件包含两个核心方法:up()down()

  • up():定义如何应用变更,比如创建表或添加字段
  • down():定义如何回滚变更,应与 up 方法对称

示例:创建 posts 表

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('content');
        $table->unsignedBigInteger('user_id');
        $table->timestamps();

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

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

执行与回滚迁移

迁移写好后,通过以下命令操作:

  • php artisan migrate:运行所有未执行的迁移
  • php artisan migrate:rollback:回滚最后一次迁移批次
  • php artisan migrate:refresh:先回滚全部再重新执行,适合开发重置
  • php artisan migrate:fresh:删除所有表并重新迁移,更彻底

注意:生产环境慎用 refresh 和 fresh,建议配合备份策略。

使用 Seeder 填充测试数据

迁移只管结构,数据填充可用 Seeder 配合完成。

  • 生成 Seeder:php artisan make:seeder UserSeeder
  • run() 方法中使用 Eloquent 或 DB 类插入数据
  • 运行:php artisan db:seed 或指定类:php artisan db:seed --class=UserSeeder

可在 DatabaseSeeder 中调用多个 Seeder,形成初始化流程。

基本上就这些。合理使用 Migration 能大幅提升团队协作效率和部署稳定性,关键是保持迁移文件细粒度、语义清晰,并与实际发布节奏匹配。


# laravel  # php  # cad  # ai  # class  # table  # 数据库  # 测试数据  # 让你  # 多个  # 已有  # 可在  # 并与  # 命令行  # 好后  # 自动生成  # 再重新 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在阿里云购买域名并搭建网站?  浅析上传头像示例及其注意事项  java获取注册ip实例  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  如何在IIS管理器中快速创建并配置网站?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  如何在Tomcat中配置并部署网站项目?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  网站建设保证美观性,需要考虑的几点问题!  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  如何在宝塔面板中创建新站点?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  MySQL查询结果复制到新表的方法(更新、插入)  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  如何在阿里云通过域名搭建网站?  javascript中对象的定义、使用以及对象和原型链操作小结  活动邀请函制作网站有哪些,活动邀请函文案?  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  ,网页ppt怎么弄成自己的ppt?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  浅谈redis在项目中的应用  JavaScript如何实现类型判断_typeof和instanceof有什么区别  原生JS实现图片轮播切换效果  Laravel观察者模式如何使用_Laravel Model Observer配置  Swift中循环语句中的转移语句 break 和 continue  Laravel安装步骤详细教程_Laravel环境搭建指南  南京网站制作费用,南京远驱官方网站?  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何获取免费开源的自助建站系统源码?  什么是javascript作用域_全局和局部作用域有什么区别?  音乐网站服务器如何优化API响应速度?  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  如何在建站之星绑定自定义域名?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  HTML 中如何正确使用模板变量为元素的 name 属性赋值  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  Laravel如何使用Sanctum进行API认证?(SPA实战)  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  实例解析Array和String方法  Laravel如何创建自定义Artisan命令?(代码示例)  如何用虚拟主机快速搭建网站?详细步骤解析  如何用西部建站助手快速创建专业网站?