是否可以以模块化的方式生成数据库?根据加载的模块使实体之间的关系可用?
示例设置
模块
每个模块都有它们管理的相应实体。使用注释创建数据库和创建代理。
用户与组1 ->多或1 -> 1的关系
应用程序1
使用模块用户和组
应用程序2
使用模块用户,而不使用组。
是否有可能使用理论注释来描述用户和组之间的关系,如果一个实体不存在,就会被删除?
删除或添加以下关系时:./供应商/bin/主义-模块orm:模式-工具:创建或./供应商/bin/原则-模块orm:模式-工具:更新被调用
发布于 2014-01-31 00:58:42
不,如果没有加载模块,则不应该删除注释。你应该换个角度看待事情。
从应用程序1和2的设置中可以看出,用户将被安装,并且组取决于用户。注意,对于应用程序1,用户是而不是,这取决于组。这意味着关系是unidirectional:,一个组知道它的用户,但是用户不知道它的组。正如你说的,这种关系也很多:很多。令人惊讶的是,Doctrine有一个名为多对多,单向的的关联映射。
唯一的问题是,您只能通过Group
加载用户的组。你不能这样做:
$user = $repository->find(1);
$groups = $user->getGroups();
用户不知道这些组,所以它无法加载它们。相反,向组存储库询问组:
$user = $userRepository->find(1);
$groups = $groupRepository->findAllByUser($user);
这将要求组存储库查找与给定用户相关的所有组。
https://stackoverflow.com/questions/21455362
复制相似问题