2012-03-28 16 views
5

Tengo una entidad llamada Evento que tieneDoctrine2: asociaciones entidad dinámica, muchos targetEntity asignada por un campo

  • un campo "associatedEntity" que contiene el nombre de la clase de otra entidad en el paquete
  • un campo " targetId "of that specific" associatedEntity "Entidad

Ahora me gustaría acceder a esta entidad objetivo dentro de mi Event-Entity de alguna manera pero ahora estoy seguro de cómo hacerlo. Me gustaría tener acceso a las diferentes entidades de destino en una plantilla ramita de usar algo como

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

Editar: Para que quede claro, lo único que estoy interesado hasta ahora es cómo crear la relación correcta. Fuera de un Mundo ORM, probablemente usarías una declaración de combinación para esto. Es como si tuviera muchas entidades objetivo mapeadas por un campo.

im Hasta el momento, utilizando el repositorio de entidad y DI para cargar las entidades asociadas, pero me parece que fea sabiendo que hay una instrucción de combinación que podría utilizar:

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

¿Está intentando que Event.target pueda apuntar a diferentes clases de destino? Si es así, podría ser un poco desafiante. – Cerad

+0

Sí, eso es lo que me gustaría hacer! – worenga

Respuesta

Cuestiones relacionadas