Доктрина 2 ассоциации

У меня есть 2 объекта Doctrine 2: - Country (id, name) - Mapping (id, objectType, internalId, externalId)

Мне нужна связь между Country и Mapping, используя следующее условие: Country.id = Mapping.internalId AND Mapping.objectType = 'country'

Могу ли я реализовать это отношение с помощью сопоставления YAML/XML?


person Torchello    schedule 18.11.2010    source источник


Ответы (2)


В настоящее время это не поддерживается в Doctrine 2. Внешние ключи для ассоциаций должны сопоставляться с первичным ключом, и вы пока не можете реализовывать фильтры для ассоциаций. Фильтры планируется реализовать в версии 2.1.

person Michael Ridgway    schedule 18.11.2010

Вы можете реализовать это с помощью Отображение наследования; ваша сущность Country будет подклассом сущности Mapping. Затем вы можете загрузить страну следующим образом:

$em->getRepository('entity\name\of\Country')->findBy(array('internalId' => 1));

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

person rojoca    schedule 18.11.2010