2012-03-28 8 views
5

mam Podmiot nazywa wydarzenie, które maDoctrine2: dynamiczne stowarzyszenia podmiotu wiele targetEntity odwzorowywane przez jednego pola

  • pole „associatedEntity” zawierający nazwę klasy innego podmiotu w wiązce
  • pole " targetId "tej konkretnej" relatedEntity "Entity

Chciałbym teraz uzyskać dostęp do tego obiektu docelowego wewnątrz mojego Event-Entity, ale jestem teraz pewien, jak to zrobić. Chciałbym uzyskać dostęp do różnych jednostek docelowych w szablonie gałązka używając coś jak

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

EDIT: Żeby było jasne, jedyne co im zainteresowany jest tak daleko, jak utworzyć relację prawidłowo. Poza ORM World prawdopodobnie użyjesz do tego instrukcji join. To tak, jakbym miał wiele Jednostek docelowych odwzorowanych przez jedno pole.

Dotychczas im przy repozytorium podmiot i di załadować stowarzyszonych, ale uważam, że brzydki wiedząc, że jest to komunikat DOŁĄCZ których mogę użyć:

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

Czy chcesz, aby Event.target był w stanie wskazać różne klasy docelowe? Jeśli tak, może to być trudne. – Cerad

+0

Tak, właśnie to chciałbym zrobić! – worenga

Odpowiedz

Powiązane problemy