Home
Nova Software
Nova SoftwareNova Software
  • 标准化 SaaS 产品

    • 诺怀云物业管理系统全场景智慧物业数字化方案
    • 诺怀云汽修管理系统汽修连锁业务全链路运营管理

    定制开发服务

    • 企业信息化系统定制
    • 移动 APP 开发
    • 微信 / 小程序开发
    • 电商系统
    • 企业官网建设
    SaaS 产品 + 软件定制双重能力

    匠心数字化服务

    SaaS 产品 + 软件定制双重能力

    成熟 SaaS 系统与软件定制开发,满足企业不同数字化需求

    new-arrownew-arrow
    数字化干货与案例分享

    行业洞察

    数字化干货与案例分享

    行业白皮书、项目案例解析、技术实践文章

    new-arrownew-arrow
  • 行业解决方案

    • 智慧物业
    • 智慧社区
    • 智慧园区
    • 智慧商业
    • 学校后勤
    • 医院后勤
    • 企事业后勤
    • 社区电商

    场景解决方案

    • 医院中央运送
    • 医院医废管理
    • 医院布草洗涤
    • 医院陪护管理
    • 设备管理
    • 维修工单管理
    • 保安巡更巡逻
    • 保洁管理
    • 物料管理
    • 场所租赁预约
    • 食堂管理
    • 考勤管理
    • 宿舍管理
    • 资产管理
    • 招商租赁管理
    • 收支管理
  • 客户案例
  • 公司介绍

    • 关于诺怀了解诺怀软件发展历程与企业概况
    • 我们的产品了解我们的产品框架
    • 新闻动态
    • 招贤纳士 加入我们,查看在招岗位
    • 选择诺怀我们的核心优势与服务特色
    • 联系我们商务咨询、技术对接与来访地址

    客户见证

    • 合作客户服务客户名录与行业覆盖
    • 客户评价来自合作企业真实客户心声

    合作模式

    • SaaS化标准系统开箱即用,快速落地
    • 定制开发模式你提需求我来实现,主打个性化
    • 数字化咨询服务业务诊断与数字化方案规划
试用申请
Home
重庆诺怀软件重庆诺怀软件

Menu

    • 诺怀云物业管理系统
    • 诺怀云汽修管理系统
    • 企业信息化系统定制
    • 移动 APP 开发
    • 微信 / 小程序开发
    • 电商系统
    • 企业官网建设
    • SaaS 产品 + 软件定制双重能力
    • 数字化干货与案例分享
    • 智慧物业
    • 智慧社区
    • 智慧园区
    • 智慧商业
    • 学校后勤
    • 医院后勤
    • 企事业后勤
    • 社区电商
    • 医院中央运送
    • 医院医废管理
    • 医院布草洗涤
    • 医院陪护管理
    • 设备管理
    • 维修工单管理
    • 保安巡更巡逻
    • 保洁管理
    • 物料管理
    • 场所租赁预约
    • 食堂管理
    • 考勤管理
    • 宿舍管理
    • 资产管理
    • 招商租赁管理
    • 收支管理
    • 关于诺怀
    • 我们的产品
    • 新闻动态
    • 招贤纳士
    • 选择诺怀
    • 联系我们
    • 合作客户
    • 客户评价
    • SaaS化标准系统
    • 定制开发模式
    • 数字化咨询服务

Laravel学习笔记(三)数据库迁移介绍

Nova Software

2014-03-18
blog-details-cover

该章节内容翻译自《Database Migration using Laravel》,一切版权为原作者。

原作者:Stable Host, LLC

翻译作者:Bowen Huang

翻译作者更多博客:http://www.cnblogs.com/huangbx

正文:

Laravel鼓励敏捷、迭代的开发方式,我们没指望在第一次就获得所有正确的。相反,我们编写代码、测试和与我们的最终用户进行交互,并完善我们的理解。

对于工作,我们需要一个配套的实践集。我们使用像subversion、GIT或Mercurial这些版本控制工具来存储应用程序的源代码文件,使我们能够撤消错误和追踪开发过程中的改变。

但应用程序更改时,存在我们不能单独使用版本控制进行有效管理的区域。在我们的开发进度中,Laravel应用程序的数据库架构不断演变:我们在这里添加了一个表,在那里重命名列,删除索引等等。数据库的改变与应用程序代码步调一致。

你需要一个复杂的方法来跟踪您的数据库架构更改,通常有几种方法:

  • 当您在开发团队内工作时,每人都需要知道关于任何架构的更改。
  • 当你在生产服务器上部署时,您需要有稳健的方式来升级您的数据库架构。
  • 如果您在多台机器上工作,你需要保持所有数据库架构的同步。

如果没有严格的约定和纪律让应用程序开发者遵循,保持数据库架构与应用程序代码同步历来是一个非常麻烦的工作。开发者(或数据库管理员) 进行所需的架构更改。但是,如果应用程序代码回滚到以前的版本,但是很难撤消数据库架构更改,照成数据库版本信息与应用程序代码版本信息不一致。

迁移就是帮助你进化你的应用程序数据架构的Laravel方式,它不需要你在每次改变的时候删除或者重建数据库。没有删除和重建就意味着你不会在每次改变的时候丢失数据。当你执行迁移时唯一的改变就是将数据库架构从一个版本移到另一个版本,不管是向前还是向后移。

Laravel迁移给你提供了一种在迭代方式中修改数据库架构的手段,它不要你用SQL操作,而是允许你使用PHP代码。Laravel架构生成器允许我们快速创建数据库表和插入列或索引。它使用清洁和富有表现力的语法来操作数据库。你也许为认为Laravel迁移就是数据库的版本控制。

通过定义一个更高级别的接口来创建和维护数据库架构,你可以用与数据库无关的方式定义它。通过使用 PHP 来创建表,定义列和索引,写一次架构并将其应用到任何所支持的数据库后端。额外的好处是 ,Laravel 跟踪已经应用了哪些迁移和哪些仍需要应用。

迁移基础知识

一个Laravel迁移仅仅是你应用程序app/database/migrations目录下的PHP源文件。每个文件都包含了对底层数据库的一组改变。对数据库的改变是在PHP代码中而不是数据库特定的SQL。你的PHP迁移代码最终被转换成符合你当前数据库的DDL,这使得切换数据库平台非常的容易。由于迁移代码保存在自己的目录中,就务必要像其他的项目代码一样包含到版本控制里面。Laravel迁移是使用Artisan工具用命令行显示运行的。

迁移文件命名约定

在旧版本Laravel的,迁移的文件有比较简单的名字,如001_create_employees_table.php 。 Laravel 3(Laravel 4.1和其相同)带来了新的命名约定,其中名称的第一部分从一个序列号变更为更长的时间,像2014_03_11_032903_create_employees_table.php。该文件的名称的形式YYYY_MM_DD_HHMMSS_some_meaningful_name.php的,也就是说一个UTC时间戳识别后跟一个迁移名。

新的更宽的名字有助于避免名称冲突,如果你是工作在一个团队里的一个开发人员,你可以检查自己的迁移。

此外, Laravel迁移文件的时间戳,以便他们可以顺序执行。时间戳数字是迁移的关键,因为它们定义了哪一个迁移应用在独立迁移版本号的顺序。

想SQL脚本,迁移从顶部开始执行,这更加需要这些文件才能被执行。顺序执行移除了类似这样的可能性——在表不存在的时候尝试插入列。

尽管你可以手动创建迁移文件,但是使用Artisan工具生成迁移脚本更加的容易(并且不易出错)。你可以根据需要在以后编辑这些文件。

运行迁移Forward 和 Backward

使用Artisan工具迁移到数据库。Laravel提供了一套artisan任务,可以归结为运行特定的几套迁移。

[注]你可以运行artisan list同查看artisan支持的任务列表,大多数数据迁移相关的任务都带有前缀migrate:****。

只有几个你需要知道的常见任务:

  • migrate:install
    你第一次使用的与迁移有关的artisan任务可能就是migrate:install。在内部,Laravel使用特殊的表来跟踪哪些迁移已经运行。若要创建此表,只需要用artisan命令行工具:
    $php artisan migrate:install
  • migrate
    你将会运行migrate任务频繁的更新你的数据库,以支持你添加到应用程序中的最新的表和列。最基本的形式,它只会对那些所有没有被运行过的迁移运行up()方法。如果没有这样的迁移,会退出。它将基于迁移的日期来运行这些迁移。
  • migrate:rollback
    在写迁移时偶尔也会犯错误。如果你已经运行了迁移,那么你不能只是编辑迁移和再次运行迁移:Laravel假定它已经运行了迁移,那么当你再次运行artisan migrate,不会做任何事情。你必须使用artisan migrate:rollback回滚迁移,然后编辑迁移,再运行artisan migrate去运行正确的版本。

一般情况下,编辑现有的迁移不是好主意:你和你的同事将会需要额外的工作,并且这是一件让人头痛的事——如果现存版本的迁移已经运行在生产机器上。相反,你需要写一个新的迁移去执行所需的改变。

[注]artisan migrate:rollback 会删除上次的迁移应用。Laravel回滚整个迁移“操作”。因此,如果上次的迁移命令运行了15个迁移,这15个迁移都会被回滚。请注意,当你删除列或者表,会丢失数据。

  • migrate:reset
    回滚所有的迁移(会删掉所有表和数据)
  • migrate:refresh
    artisan migrate:refresh任务将删除数据库、 重新创建它并将加载当前架构。这是一个方便快捷方式去运行重置并随后重新运行所有迁移。
  • migrate:make
    artisan migrate:make命令告诉 Laravel 来生成一个迁移文件骨架 (这是实际上是一个 PHP 文件) ,存放到app/database/migrations文件夹中。然后,您可以编辑此文件来充实您的表/索引定义。然后,artisan migrate命令运行时,artisan会查询此文件来生成 SQL DDL 的实际代码。

接下来会详细描述数据库迁移

未完待续……

留言
诺怀软件

诺怀软件

Oct 26, 2026

诺怀软件自 2005 年投身软件开发领域,是国家高新技术、重庆市专精特新企业,积累了 20 多年行业数字化落地经验,自主研发的诺怀云物管平台获评重庆重点软件产品。我们服务全国大量物业、园区、医疗机构客户,以可追溯、透明化的数字化方案,帮助客户解决账目混乱、协同低效、监管难落地等痛点,赋能物业规范化运营,重建业主信任。欢迎留言,获取适配您项目的专属方案.

回复
预约咨询

获取定制开发解决方案

如果您也想了解软件定制开发、落地智慧物业、后勤数字化管理等,可预约顾问一对一沟通方案.

  • 20+开发经验

  • 30+全球区域客户

  • 15000+成功项目

footer-four-gradient
nova software logo

专注企业软件定制开发,提供物业、汽修等行业整体解决方案,助力企业业务数字化升级

抖音抖音
小红书小红书
微信服务号微信服务号
今日头条今日头条
搜狐号搜狐号
视频号视频号

关于诺怀

  • 公司介绍
  • 新闻动态
  • 客户案例
  • 联系我们
  • 常见问答

产品服务

  • 软件定制开发
  • 移动 APP 开发
  • 小程序定制开发
  • 物业SaaS系统
  • 汽修SaaS系统
  • 网站开发
  • 电商开发

案例及解决方案

  • 智慧物业解决方案合集
  • 汽修管理解决方案
  • 物业客户案例合集
  • 定制开发案例合集

咨询热线:4008310286

渝ICP备14000366号-1© 2026 重庆诺怀软件有限公司