区分Doctrine2中的多对一对象关系

时间:2011-05-20 00:35:23

标签: symfony doctrine-orm

我目前正在为Symfony2开发一个通用的投票捆绑包,但是无论是对Doctrine2的限制,还是我自己对其功能的理解。

在此捆绑包中,只有一个投票实体,它与 n 其他对象有一对多的关系。我知道如果我有简单的SQL(下面),我会怎么做,但是我在Doctrine2中可以做类似的事情吗?如果没有,您能否为我推荐其他解决方案进行调查?

CREATE TABLE votes (
  vote_id int unsigned not null auto_increment,
  target_id int unsigned not null,
  target_class varchar(64) not null,
  vote_value tinyint(1) not null default 0,
  PRIMARY KEY (vote_id)
);

CREATE TABLE voteable_entity_a (
  -- whatever columns
);

CREATE TABLE voteable_entity_b (
  -- whatever columns
);

我注意到有单表继承,我可以使用一个鉴别器列,但这是为了拥有基于最高Vote类的多个对象。这不是我想要的。

最糟糕的是,如果仅仅使用QueryBuilder来回避所有事情会有多么糟糕?

1 个答案:

答案 0 :(得分:1)

这实际上并不受支持,之前我有类似的功能请求,但支持这一点而不将细节暴露给域模型是相当棘手的。 Typo3目前使用以下解决方法:

http://git.typo3.org/FLOW3/Packages/TYPO3CR.git?a=blob;f=Classes/Domain/Model/ContentObjectProxy.php;h=34f642400c714e16df86f4373bae3e6ca1349320;hb=31de0404ca25c5036e4d4cfd9f9dc55878902afe