2012-03-28 26 views
5

Tôi có một Entity gọi là tổ chức sự kiện trong đó cóDoctrine2: hiệp hội tổ chức năng động, nhiều targetEntity ánh xạ theo một trường

  • một lĩnh vực "associatedEntity" chứa tên lớp của một Entity trong Gói
  • một lĩnh vực " targetId "của" specificEntity "cụ thể đó Entity

Bây giờ tôi muốn truy cập thực thể đích này bên trong Event-Entity của tôi bằng cách nào đó nhưng bây giờ im chắc chắn cách thực hiện. Tôi muốn truy cập Entities mục tiêu khác nhau trong một mẫu cành lá sử dụng một cái gì đó giống như

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

Chỉnh sửa: Chỉ cần được rõ ràng, điều duy nhất quan tâm im cho đến nay là làm thế nào để tạo ra các mối quan hệ đúng cách. Bên ngoài một thế giới ORM bạn có thể sẽ sử dụng một tuyên bố tham gia cho việc này. Nó giống như tôi có nhiều thực thể mục tiêu được ánh xạ bởi một trường.

im Cho đến nay việc sử dụng kho thực thể và DI để tải Entities liên quan, nhưng tôi thấy rằng xấu xí biết có một Bản Tuyên Bố THAM GIA mà tôi có thể sử dụng:

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

Bạn đang cố gắng để Event.target có thể trỏ đến các lớp đích khác nhau? Nếu vậy, đó có thể là một chút khó khăn. – Cerad

+0

Vâng, đó là những gì tôi muốn làm! – worenga

Trả lời

1

Twig attribute function là những gì bạn cần.

+1

Ok, nhưng làm cách nào để tôi tạo Quan hệ Thực thể? – worenga

Các vấn đề liên quan