新闻中心

Lar*el如何创建和运行数据库迁移?(Migration详解)

2025-12-12
浏览次数:
返回列表
Lar*el数据库迁移是管理结构变更的核心机制,通过Artisan命令创建带时间戳的迁移文件,用up()和down()方法实现可逆操作,仅处理结构变更,运行用migrate命令,回滚用migrate:rollback。

laravel如何创建和运行数据库迁移?(migration详解)

在 Lar*el 中,数据库迁移(Migration)是管理数据库结构变更的核心机制,它让团队协作和环境部署更安全、可追溯。创建和运行迁移其实不复杂,但关键在于理解它的设计逻辑和常见用法。

如何创建一个迁移文件

Lar*el 提供 Artisan 命令快速生成迁移文件,文件会自动存放在 database/migrations/ 目录下,并带时间戳前缀,确保执行顺序。

  • 创建一张新表:运行 php artisan make:migration create_users_table,Lar*el 会生成类似 2025_05_10_123456_create_users_table.php 的文件
  • 为已有表添加字段:用 php artisan make:migration add_email_to_users_table,文件名体现意图,便于后续识别
  • 如果想指定表名或字段,可以加 --create=posts--table=users 参数,命令会自动填充基础结构

迁移文件里写什么

每个迁移类包含两个核心方法:up() 定义“升级”操作(如建表、加字段),down() 定义“回滚”操作(如删表、删字段),必须一一对应,保证可逆性。

  • up() 中使用 Schema 构建器定义结构,比如 Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->timestamps(); });
  • down() 一般直接删表:Schema::dropIfExists('posts');;如果是修改字段,需用 dropColumn()renameColumn() 等明确操作
  • 不要在迁移中写业务逻辑或大量数据操作,迁移只管结构。数据填充用 Seeder,不是 Migration

如何运行和回滚迁移

迁移文件写好后,用 Artisan 命令触发实际的数据库变更:

Procys Procys

AI驱动的发票数据处理

Procys 102 查看详情 Procys
  • 执行所有未运行的迁移:php artisan migrate,Lar*el 自动按时间戳顺序执行,并记录到 migrations 表中
  • 只运行某一个迁移(调试用):php artisan migrate --path=database/migrations/2025_05_10_123456_create_posts_table.php
  • 回滚上一次迁移:php artisan migrate:rollback;回滚最近 3 次:php artisan migrate:rollback --step=3
  • 重置全部迁移再重跑(慎用,仅开发环境):php artisan migrate:resetphp artisan migrate

实用小贴士

迁移不是一劳永逸,日常开发中有些细节容易忽略但影响很大:

  • 每次修改迁移文件后,别直接改已提交的迁移——应新建迁移来修正,否则团队其他成员执行会出错
  • 运行 php artisan migrate:status 可查看哪些迁移已执行、哪些待执行,状态一目了然
  • 线上环境运行迁移前,务必先备份数据库;避免在生产环境用 migrate:refreshreset
  • 如果迁移失败,检查数据库用户权限、字段长度限制(如 MySQL 默认 varchar(255) 加索引需指定长度)、引擎类型(InnoDB 支持外键)等底层约束

基本上就这些。迁移本质是“版本控制 + SQL 脚本化”,写清楚意图、保持可逆、小步提交,就能稳住数据库演进节奏。

以上就是Lar*el如何创建和运行数据库迁移?(Migration详解)的详细内容,更多请关注php中文网其它相关文章!


# 解决问题  # 展会如何宣传推广网站  # 建设网站厂家  # 百度推广营销策划方案  # 优化网站平台设计软件  # 建设医馆网站内容  # 微信推广营销项目怎么做  # 财经网站推广方案  # 平湖网站建设管理系统  # 免费优化网站运营模式  # seo公司哪里有  # 关键在于  # 创建一个  # mysql  # 数据处理  # 线上  # 中文网  # 相关文章  # 已有  # 就能  # 放在  # 开发环境  # ai  # laravel  # php 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  深入理解Promise链:如何在catch后中断then的执行  顺丰快件物流信息 官方网站查询入口  蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版  如何在 Excel Online 和 Google 表格中更改日期格式  魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】  C#使用XPath查询节点时出错? 常见语法错误与调试技巧  优化LangChain文档加载与ChromaDB集成:解决多文档处理与分块问题  网易大神账号申诉需要多久_网易大神账号申诉流程说明  CSS图片焦点样式实现教程:理解与应用tabindex属性  使用J*aScript检测输入元素是否包含在特定类中  C++如何实现异步操作_C++11使用std::future和std::async进行异步编程  AO3最新可访问网址 Archive of Our Own官方在线入口  一加 14R 快充无反应_一加 14R 充电优化  响应式图片在网页设计中的正确实现方法  Win11网速慢怎么解决 Win11网络设置优化解除限速  QQ邮箱官方登录入口_QQ邮箱网页版快捷使用平台  TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法  VS Code远程开发时如何处理文件权限问题  漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址  抖音网页版怎么|直播|_抖音网页版开播操作指南  CSS响应式网页如何实现主次模块比例自适应_flex-grow与flex-shrink调整  CSS布局:解决全屏元素100%尺寸与外边距导致的页面溢出问题  C++编译期如何执行复杂计算_C++模板元编程(TMP)技巧与应用  Typer应用中动态命令行参数的解析与处理  Win11怎么关闭快速启动_Win11彻底关机设置教程  黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】  MongoDB聚合管道:正确匹配对象数组中_id的方法  J*aScript实现动态背景色下的文本与按钮颜色自适应调整  lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法  处理嵌套交互式控件:前端可访问性指南  优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率  mc.js官网登录入口 mc.js官方登录入口最新版  b站怎么删除评论_b站评论管理与删除操作  Win11怎么合并任务栏图标 Win11开启任务栏合并减少图标占空间【方法】  mc.js游戏直达 mc.js网页免下载版本秒进地址  poki网页游戏推荐_poki免费游戏平台入口  腾讯视频怎么举报不良内容_腾讯视频内容举报流程与违规信息处理方法  c++中的std::basic_string的SSO优化_c++短字符串优化深度解析  必由学官方平台入口 必由学在线课堂登录地址  漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口  电脑IP地址怎么查 查看本机IP地址的几种方法  windows10怎么关闭系统提示音_windows10彻底静音设置方法  Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】  vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法  Shopware订单对象中获取产品自定义字段的正确方法  韩小圈电脑版在线入口_网页版免费登录地址  css滚动区域卡顿如何改善_css滚动问题用will-change优化渲染  晋江读书网页版在线登录 晋江读书电脑版官网  高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】 

搜索