2012-03-28 25 views
5

映射我有一個實體,稱爲事件具有Doctrine2:動態實體關聯,許多targetEntity一個場

  • 場「associatedEntity」包含在捆綁
  • 字段,「其他實體的類名targetId「實體

我現在想以某種方式訪問​​我的Event-Entity中的這個目標實體,但是現在我知道該怎麼做。我想訪問不同的目標實體使用的東西樹枝模板像

{% if event.getClassName() == "User" %} 
    {{ if event.getUser().getName() }} 
{% endif %} 

編輯:只要是明確的,唯一的事情IM感興趣到目前爲止是如何正確地創建關係。在ORM世界之外,您可能會爲此使用聯合聲明。這就像我有很多目標實體映射到一個字段。使用實體庫和DI

到目前爲止IM加載關聯的實體,但我覺得醜知道有一個連接語句,我可以使用:

public function getUpcomingEvents(){ 
     $query = $this->createQueryBuilder('E') 
     ->where('E.resolved = false') 
     ->orderBy('E.notify_date', 'ASC') 
     ->setMaxResults($limit); 
    $res = $query->getQuery()->getResult(); 
    $res = $this->attachAssociatedObjects($res); 
    return $res; 
} 

public function attachAssociatedObjects($res){ 
    foreach ($res as $key => $entity) { 
      $assocObject = $this->getEntityManager()->getReference('My\Bundle\Entity\\'.$entity->getClassName(), $entity->getTargetId()); 
      $res[$key]->setAssociatedObject($assocObject); 
    } 
    return $res; 
} 
+0

您是否試圖讓Event.target能夠指向不同的目標類?如果是這樣,那可能有點困難。 – Cerad 2012-03-29 15:24:12

+0

是的,那就是我想要做的! – worenga 2012-03-30 13:02:03

回答

1

特威格attribute function是你所需要的。

+1

好的,但我如何創建實體關係? – worenga 2012-03-29 08:12:29