我有两个Laravel项目,一个用于面向客户(让我们称之为project A
),另一个用于管理员(让我们称之为project B
)。 / p>
如果我更新数据库,例如创建新表或在现有表上添加额外列,使用project B
中的Laravel迁移,project A
方是否需要执行任何操作?
谢谢!
答案 0 :(得分:1)
如果你进入你的数据库并执行select * from migrations
,它可以帮助你了解artisan migrate
命令引用的内容,以决定是否运行迁移。
我会和你一起思考:
如果在项目A中创建迁移并运行它,它将更新您的数据库,数据库中的迁移表将记录已运行迁移。
项目B不会在应用程序的自己的数据库/迁移文件夹中进行迁移。因此,如果您执行artisan migrate --pretend
,现实是它将在迁移表中查找条目,该条目在其自己的数据库/迁移文件夹中没有作为迁移文件的记录。
我真的不确定它会在那里做什么。
但是,拥有多个应用程序使用的单个数据库绝对是您在这里尝试做的事情。这是正常的做法。
为什么不决定哪个应用A或B,你将负责保留所有迁移,并且知道你只会在项目A中执行artisan make:migration
和artisan migrate
,并且只考虑项目B是项目A实际上“拥有”的数据库的第二个客户端?
所以,鉴于上述情况,我认为你的问题的答案是否定的。您不必在laravel应用程序中使用迁移系统。您也可以连接到数据库,并假设您的代码所需的任何表已经存在,这将是您的项目B将要执行的操作。
(但让管理员成为数据库迁移的所有者(您实际上称之为项目B)可能是有意义的。)
同样很明显,如果使用雄辩,那么两个项目都需要相应的雄辩模型。您至少必须复制该代码。
答案 1 :(得分:0)
您可以在first_migration
中创建project A
并执行,然后在second_migration
中创建project B
并执行,您会发现迁移工作正常预期的。
但是...当您尝试在任何项目中进行rollback
的迁移时,由于Migration not found
动作将调用{{1 }}方法中已迁移的每个迁移文件中,但是rollback
或down
具有所有迁移文件的一部分。
因此,您可以使用project A
将所有迁移文件放在一起:
project B