2012-03-28 17 views
5

tarafından eşlenen bir varlık Doctrine2: Dinamik varlık ilişkilendirmeleri, birçok targetEntity bir alanda

  • sahiptir Olay denilen sahip bir saha "associatedEntity" Demet
  • alan "başka idarenin sınıf adını içeren associatedEntity "belirli bir 'targetId' Varlık

Şimdi nedense ama bunu nasıl im şimdi emin benim Olay-Varlık içinde bu hedef varlık erişmek istiyoruz. Ben

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

Edit gibi bir şey kullanarak bir dal şablonunda farklı hedef Varlıkları erişmek istiyorsanız: Daha açıkçası, tek şey im ilgilenen şimdiye kadar düzgün ilişki oluşturmak için nasıl. Bir ORM Dünyası dışında muhtemelen bunun için bir katılma bildirimi kullanırsınız. Bir alan tarafından eşlenmiş birçok hedef varlığım var gibi. varlık depoyu ve DI kullanarak

Şimdiye kadar im ilişkili Varlıkları yüklemek için, ama çirkin bilerek ı kullanabilirsiniz bir JOIN Bildirimi olduğunu bulmak:

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 farklı hedef sınıflarına işaret edebilecek mi? Eğer öyleyse, bu biraz zor olabilir. – Cerad

+0

Evet, yapmak istediklerim bu! – worenga

cevap

İlgili konular