Различение объектных отношений «многие к одному» в Doctrine2 - PullRequest
1 голос
/ 20 мая 2011

В настоящее время я работаю над общим пакетом голосования для 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
);

Я заметил, что существует наследование одной таблицы, где я могу использовать столбец дискриминатора, но он предназначен для нескольких объектов, основанных на самом высоком классе голосования. Это не совсем то, что я хочу.

Худшее приходит к худшему, насколько это отвратительно, чтобы просто использовать QueryBuilder для всего?

1 Ответ

1 голос
/ 20 мая 2011

Это на самом деле не поддерживается, раньше у меня были похожие запросы, но довольно сложно поддерживать это, не раскрывая детали модели предметной области.В настоящее время Typo3 использует следующий обходной путь:

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

...