Использование EntityManager внутри сущностей Doctrine 2.0

У меня есть 2 объекта: Country (id, name) и Mapping (id, object, internalId, externalId). Country и Mapping не связаны с ассоциациями (поскольку в Mapping есть строки не только для страны). Мне нужно получить внешний идентификатор для страны, используя следующие условия:

  • country.id = mapping.internalId
  • mapping.object = 'country'

Поэтому я планирую добавить функцию getExternalId () в Country

function getExternalId() {
    $em = Registry::getEntityManager();

    $mapping = $em->getRepository('Mapping')->findOneBy(array(
        'object'     => 'country',
        'internalId' => $this->getId()
    ));

    return !empty($mapping) ? $mapping->getExternalId() : false;
}

Вопросы :

  1. Это хорошая практика - использовать EntityManager внутри сущностей? Если нет, объясните, пожалуйста, как получить внешний идентификатор в моем случае?
  2. Может быть, можно связать страну и отображение с помощью файлов yaml?

Заранее спасибо!

33
задан Philippe Gerber 2 October 2011 в 16:40
поделиться