如何优雅的处理表结构变更导致的数据拆分需求
业务需求
- 1.0版系统的微信模块只有一个用户表 wechat_users ,里面包含了微信用户信息,主要字段是 mini_open_id, mp_open_id, user_name 。
- 随着业务需求的更新与升级,微信公众号与小程序的一对一关系已经满足不了。需要升级为一对多的关系了,也就是一个公众号信息对应多个小程序。
- 所以现在需要新增一个小程序用户表 mini_program_users ,包含小程序用户的信息,主要字段是 mini_open_id。原来微信用户表 wechat_users 的 mini_open_id 字段删除。
- 因为已经是线上的系统,所以 wechat_users 表中已经有很多用户数据了。
目前的方案
前提:使用 Migration 进行所有表结构的管理。
- 创建 CreateMiniProgramsTable 类新建 mini_program_users 表。
- 创建 MoveWechatUserData 类将 wechat_users 表的 mini_open_id 等字段迁移至 mini_program_users 表。
- 创建 EditWechatUsersTable 类删除 wechat_users 表的 mini_open_id 等字段。
目前的问题
- 看了 migrate 和 seeder 文档,最后决定用 migrate 进行处理,不知 Laravel 是否还有其他更好的方案?
- 因为 wechat_users 和 mini_program_users 表有关联关系,所以在 MoveWechatUserData 类中有一些必要的业务逻辑处理,然后在做新增操作,这样是否符合规范呢?
希望听到大家更好的解决方案,你们是如何处理这样的问题呢?
推荐文章: