2010-11-18 3 views
2

У меня 2 Doctrine 2 Entities: - Страна (номер, имя) - Mapping (идентификатор, OBJECTTYPE, internalId, ExternalId)Doctrine 2 ассоциация

Мне нужна связь между страной и картографирования с использованием следующего условия: Страна .id = Mapping.internalId AND Mapping.objectType = 'country'

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

ответ

1

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

1

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

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

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

Смежные вопросы