【发布时间】:2013-05-15 10:05:05
【问题描述】:
我有 2 个 Symfony 捆绑包。 AdminBundle 将始终安装。可能会或可能不会安装 PageBundle。
我想定义一个名为 AdminModule(名称、控制器类、描述、启用)的基本实体,以及一个简单地从 AdminModule 继承的 PageModule(实体控制器将实现特定接口)。
<?php
namespace AdminBundle\Entity;
/**
* Admin Component
*
* @ORM\Entity
* @ORM\Table(name="admin_module")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"page" = "\PageBundle\Entity\PageComponent"})
*/
class AdminModule
{
// private vars, getters, setters
}
?>
<?php
namespace PageBundle\Entity;
use AdminBundle\Entity\AdminModule;
/**
* Page Component
*
* @ORM\Entity
* @ORM\Table(name="page_module")
*/
class PageModule extends AdminModule
{
//
}
?>
我认为,我遇到的问题是 AdminModule 注释 @ORM\DiscriminatorMap({"page" = "\PageBundle\Entity\PageModule"}) 需要在 AdminBundle 上进行定义 - 但可能未安装 PageBundle。
我认为继承结构的类型一定是错误的(?)但是我不清楚我可以采取哪些替代方法?感谢您的任何帮助或指导:)
【问题讨论】:
标签: symfony doctrine-orm class-table-inheritance