Orm 如何设置具有条件关联的ZF2条令实体
我正在使用ZF2和条令来开发一个管理日历事件的项目。所有事件都共享一组通用的数据元素,但唯一类型的事件共享它们自己独特的一组特定于类型的数据元素。例如,所有事件都包括公共元素,如Orm 如何设置具有条件关联的ZF2条令实体,orm,doctrine-orm,zend-framework2,Orm,Doctrine Orm,Zend Framework2,我正在使用ZF2和条令来开发一个管理日历事件的项目。所有事件都共享一组通用的数据元素,但唯一类型的事件共享它们自己独特的一组特定于类型的数据元素。例如,所有事件都包括公共元素,如eventID、eventName和eventDate。除了这些常见元素外,“会议”活动还将包含特定于会议的额外元素,如议程、分钟或与会者,属于“培训”的活动将包含特定于培训的额外元素,属于“会议”的活动将有额外的独特元素,等等 项目的索引视图希望能够列出所有事件,但不需要“公共”数据集之外的任何数据。如果一个事件属于某
eventID
、eventName
和eventDate
。除了这些常见元素外,“会议”活动还将包含特定于会议的额外元素,如议程
、分钟
或与会者
,属于“培训”的活动将包含特定于培训的额外元素,属于“会议”的活动将有额外的独特元素,等等
项目的索引视图希望能够列出所有事件,但不需要“公共”数据集之外的任何数据。如果一个事件属于某一类型,它将不属于另一类型;因此,每个事件将仅与一个补充数据集相关联。某些事件类型可能有多个路由器:路由器销售/会议[/action]
将希望访问与路由器营销/会议[/action]
相同或相同的实体、字段集和表单
在我的数据库中,我将有一个名为events
的表来索引所有事件并记录公共数据,我将有一个相关表的集合,如events\u meetings
,events\u training
,events\u conferences
,等等来记录特定类型的数据
我正在考虑该项目的多种不同解决方案:
解决方案一:单个模块、单个事件
实体和字段集,以及每个特定类型数据元素组的实体和字段集。此解决方案要求事件
实体具有多个OneToMany元素:每个关联数据集一个元素。我不知道这是否可能;即使有可能,我也不知道这是否是个好主意
解决方案二:通用“事件”实体和字段集的单个模块和副本:events_1
链接到events
表,并与events_会议
实体相关联<代码>事件_2与事件_1
相同,但OneToMany元素除外,它与事件_培训
实体相关联;和events\u 3
、events\u 4
、events\u 5
等都与各自的补充数据集实体相关联。我可以看出这是可行的,但它需要大量几乎相同的公共数据实体副本
解决方案三:多个模块,每个模块都有一个事件
实体和字段集,以及一个关联的事件
实体和字段集。这也许是最干净的解决方案,尽管它似乎创建了许多相同的代码
解决方案四:重新配置数据架构,以便所有补充数据都可以存储在单个表中。例如,事件会议
表中的每一个会议事件都有一行,议程有一列,分钟有一列
与会者有一列
,而不是有一个事件会议
表,可以创建一个events\u alt\u data
表,其中每个元素和列都有不同的行,例如eventID
、elementType
、elementTitle
和eventValue
。Wordpress为唯一数据做了类似的事情,但在我的项目中,补充数据集是存储大部分数据的地方,我担心随着数据的增长,它可能会影响性能。此解决方案还需要一些创造性的编码来处理数据元素的条件性质,以及如何验证和设置任何类型或长度的数据的选项
有什么建议吗?这是一条路。查看此链接中描述的区分映射,您应该能够映射一个实体,但可以根据数据库行数据的差异与从基础实体创建的多个实体进行交互。