2012-03-09 8 views
3

Рассмотрим объект с (однонаправленного) ManyToOne ассоциации:Как получить идентификатор связанного объекта без загрузки связанного объекта?

EntityX: 
    type: entity 
    table: x 
    id: 
     id: 
      type: integer 
      generator: { strategy: AUTO } 

    fields: 
     type: 
      type: string 

    manyToOne: 
     entityY: 
      targetEntity: EntityY 

Любое свойство EntityY будет ленивым загружен через прокси-класса; однако, идентификатор EntityY будет (должен быть) доступен до загрузки прокси. Каков наилучший способ получить этот идентификатор без запуска прокси-загрузчика EntityY?

Edit: Я использую Symfony2 (2.0.11), так что зависимость доктрина вынуждена v2.1

ответ

6

Короткий ответ: Обновление до Доктрины 2.2. EntityY-> getId() больше не будет запускать загрузку класса.

Я давно видел код, который показывал, как добраться до объекта UnitOfWork и вытащить его. Не могу найти. Можете попробовать найти список рассылки пользователей Doctrine2. Но учитывая, что 2.2 исправляет эту проблему, я просто буду жить с загрузкой, пока не смогу обновиться.

+0

Я использую Symfony2, который пока не поддерживает Doctrine 2.2, насколько я знаю. Я попробую найти список рассылки - спасибо за предложение. – jlb

+2

Нашли решение в списке рассылки доктрины. '$ entityYId = $ em-> getUnitOfWork() -> getEntityIdentifier ($ entityX-> getEntityY());' Cheers! – jlb

+0

Спасибо! Вы положили меня на мой 1000 знак репутации. – Cerad

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