rezzza / doctrine-schema-multi-mapping
允许在定义多映射时使用 doctrine 模式命令。
dev-master / 1.0.x-dev
2015-10-06 14:07 UTC
Requires
- php: >=5.3.3
- doctrine/doctrine-bundle: ~1.2
- doctrine/orm: ~2.4
This package is not auto-updated.
Last update: 2024-09-14 16:18:46 UTC
README
在 Symfony 上的安装
在 AppKernel
中激活捆绑包
if (in_array($this->getEnvironment(), array('test'))) { $bundles[] = new Rezzza\DoctrineSchemaMultiMapping\App\Bundle\DoctrineSchemaMultiMappingBundle(); }
使用方法
./app/console rezzza:doctrine-multi-mapping:schema:create --em=default --env=test
./app/console rezzza:doctrine-multi-mapping:schema:update --em=default --env=test
./app/console rezzza:doctrine-multi-mapping:schema:drop --em=default --env=test
你应该考虑不要在生产环境中使用此捆绑包.
为什么使用它?
在 Doctrine2 中,如果你为同一实体定义多个映射,那么 doctrine:schema:*
命令将失败,因为它将尝试创建两个具有相同名称的 SQL 表,而不是从各个角度组合表示同一实体的所有实体映射。
示例:Acme 电子商务应用程序具有许多 User 实体
我们希望在不同的边界上下文中表达 User 模型。
Account 边界上下文中 User 实体的定义
我们有一个 \Acme\User\Account\User.php 实体。
在这个边界上下文中,我们需要管理用户身份验证和登录,因此一个(简单)映射可以是
- id
- username
- password
- first_name
- last_name
Cart 边界上下文中 User 实体的定义
我们有一个 \Acme\User\Cart\User.php 实体。
在这个边界上下文中,我们不需要担心身份验证问题,我们只需要知道用户的电子商务相关信息。
- id
- first_name
- last_name
- is_first_order
这种类型的应用程序在你的生产环境中可以使用共享数据库,并且你需要手动定义迁移
在这个示例中,Doctrine 将两次定义 user
表,并抛出异常。
此库仅将两个实体映射合并,用于 doctrine:schema:*
命令.
此捆绑包通过这种方式提供了 3 个命令,以替换 doctrine:schema:*
命令,您必须将命名空间替换为 rezzza:doctrine-multi-mapping:schema:*
。
哪些 Doctrine 映射功能不受支持?
目前,仅支持继承类型“none”和“single_table”,您可以自由地提交 PR 以支持其他类型。