是否可以以模块化方式生成数据库?根据可用的实体之间的关系,具体取决于加载哪些模块?
示例设置
- Zend Framework 2
- DoctrineOmmodule
- 学说
模块
- 用户
- 组
每个模块都有他们管理的相应实体。使用注释来创建数据库和代理创建。
用户和组1->多个或1-> 1
之间的关系应用程序1
使用模块用户和组
应用程序2
使用模块用户,但不使用组。
是否可以使用学说注释来描述用户和组之间的关系,如果不存在实体,将删除?
当.//vendor/bin/doctrine-module orm:schema-tool:create or or ././vendor/bin/doctrine-module orm:schema-tool:更新被称为
否,如果未加载模块,则不应删除注释。您应该以不同的方式看待事物。
从您的应用程序1和2的设置中可以看到,将安装用户,组取决于用户。请注意,对于应用程序1,用户是不是取决于组。这意味着关系是单向:一个组知道其用户,但用户不了解其组。正如您所说,关系也很多:很多。令人惊讶的是,学说的协会映射称为多对多,单向。
唯一的事情是您只能通过Group
加载用户组。您不能做这样的事情:
$user = $repository->find(1);
$groups = $user->getGroups();
用户不知道这些组,因此无法加载它们。而是向组存储库询问组:
$user = $userRepository->find(1);
$groups = $groupRepository->findAllByUser($user);
这将要求组存储库查找与给定用户相关的所有组。