Laravel在不同的分支机构迁移

问题描述 投票:3回答:2

在我的应用程序中,使用Laravel 5.1构建,我有一个分支开发。

我必须实现2个新功能,所以我创建了第一个分支(从dev开始)需要2个表(所以新的迁移),然后,当我完成它时,我创建了第二个分支(开始使用dev)并且这个功能需要一个不同的表所以新的迁移。

所以我的情况是这样的:

branch 1 -> migration1
branch 2 -> migration2, migration3

但是现在我需要更改(很多列)与branch1相关的表,所以我应该回滚迁移,因为我不会进行新的迁移以进行更改,但我会回滚迁移并重新创建。

但我现在的问题是,如果我在branch1中返回并尝试:

php artisan:migrate rollback

最新的迁移(在我的数据库中)是branch2(migration2,migration3)的表,而不是与branch1(migration1)相关的表。

那么在许多分支之间管理迁移的正确方法是什么?

laravel database-migration
2个回答
1
投票

当我在一个更大的项目中创建一个新的分支时。例如,启动重构时。我创建了数据库的副本,并使用分支名称为此副本添加前缀。当切换回当前的主服务器或生产分支以快速修复错误时,这可以省去许多令人头疼的问题,...这样您就不会像在问题中描述的那样发生任何迁移冲突。

切换分支时,我更新了我的.env数据库名称,并清除了应用程序的缓存。这样,Laravel就会开始使用与您的应用程序/迁移所处的状态相对应的数据库。

php artisan config:cache
php artisan config:clear
php artisan cache:clear

0
投票

我建议创建一个数据库表的副本,并在.env文件中表示它们:

DB_DATABASE_BRANCH=branchtable
DB_DATABASE=mastertable

然后切换到您的分支并将config/database.php数据库驱动程序更改为DB_DATABASE_BRANCH

'database' => env('DB_DATABASE_BRANCH', 'forge'),

由于git会跟踪config/database.php,因此在使用git checkout ***时会自动切换数据库。这是Odyssee的解决方案更好,因为无论何时切换分支,都不需要触摸.env文件。

查看我的blog post了解更多详情。

© www.soinside.com 2019 - 2024. All rights reserved.