使用相同数据库的两个项目的Laravel数据库迁移

时间:2018-03-05 09:46:13

标签: laravel laravel-5 laravel-migrations

我有两个Laravel项目,一个用于面向客户(让我们称之为project A),另一个用于管理员(让我们称之为project B)。 / p>

如果我更新数据库,例如创建新表或在现有表上添加额外列,使用project B中的Laravel迁移,project A方是否需要执行任何操作?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果你进入你的数据库并执行select * from migrations,它可以帮助你了解artisan migrate命令引用的内容,以决定是否运行迁移。

我会和你一起思考:

如果在项目A中创建迁移并运行它,它将更新您的数据库,数据库中的迁移表将记录已运行迁移。

项目B不会在应用程序的自己的数据库/迁移文件夹中进行迁移。因此,如果您执行artisan migrate --pretend,现实是它将在迁移表中查找条目,该条目在其自己的数据库/迁移文件夹中没有作为迁移文件的记录。

我真的不确定它会在那里做什么。

但是,拥有多个应用程序使用的单个数据库绝对是您在这里尝试做的事情。这是正常的做法。

为什么不决定哪个应用A或B,你将负责保留所有迁移,并且知道你只会在项目A中执行artisan make:migrationartisan migrate ,并且只考虑项目B是项目A实际上“拥有”的数据库的第二个客户端?

所以,鉴于上述情况,我认为你的问题的答案是否定的。您不必在laravel应用程序中使用迁移系统。您也可以连接到数据库,并假设您的代码所需的任何表已经存在,这将是您的项目B将要执行的操作。

(但让管理员成为数据库迁移的所有者(您实际上称之为项目B)可能是有意义的。)

同样很明显,如果使用雄辩,那么两个项目都需要相应的雄辩模型。您至少必须复制该代码。

答案 1 :(得分:0)

您可以在first_migration中创建project A并执行,然后在second_migration中创建project B并执行,您会发现迁移工作正常预期的。

但是...当您尝试在任何项目中进行rollback的迁移时,由于Migration not found动作将调用{{1 }}方法中已迁移的每个迁移文件中,但是rollbackdown具有所有迁移文件的一部分。

因此,您可以使用project A将所有迁移文件放在一起:

project B