2012-09-25 3 views
0

나는 내 요점을 더 잘 이해할 수 있도록 비유를 사용하고 있습니다. 도서관을 상상해 봅시다. 책, 도서 모음 및 사용자가 있습니다. 도서, 컬렉션 및 사용자는 본인입니다.합류 한 요청 : OneToMany + ManyToMany

  • 컬렉션 내가 세 기관 사이의 이러한 관계를 구축

(ManytoMany bidirectionnal)

  • 책은 여러 사용자에 의해 읽은 수 (bidirectionnal OnetoMany을) 많은 책을 가지고 있으며, 지금까지는 괜찮아 보입니다.

    질문 : 주어진 컬렉션에 대한 도서 목록을 표시하는 방법과 현재 사용자가 해당 도서를 읽었습니까?

    나는 도서 목록 요청과 함께 시작하고 있습니다. 사용자에게 하위 요청이나 비슷한 것을 추가하는 방법을 모르겠습니다.

    class CollectionRepository extends EntityRepository { 
        public function getCollectionWithBooks($collectionName) { 
         $qb = $this->createQueryBuilder('c') 
          ->leftJoin('c.books', 'b') 
          ->where('c.urlname = :collectionName') 
           ->setParameter('collectionName', $collectionName) 
          ->addSelect('b'); 
    
         return $qb->getQuery() 
          ->getSingleResult(); 
    
        } 
    } 
    

    대단히 감사합니다.

  • +1

    . 이것은 arraycollection을 돌려 주며 (그렇게 선언한다면), in_array 나 사용자가 그 책을 읽었는지 아는대로하면된다. (내가 명확하지 않거나 예를 들어 말해 줄 필요가 있다면) – Snroki

    +0

    도움을 주셔서 감사합니다. 마지막으로, 콘솔로 엔티티를 업데이트했을 때 Symfony가 arraycollection과 setter를 만들었다는 것을 알게되었습니다. – Yako

    답변

    0

    Coussinsky에게 감사의 답변을 찾았습니다.

    그것은 내가

    첫째 : 예상보다 마지막으로 훨씬 덜 복잡, 우리는 책에 연결된 사용자의 게터/세터가 필요합니다. 이는 같은 콘솔과 책 엔티티를 업데이트하여 수행 할 수 있습니다

    php app/console doctrine:generate:entities appLibraryBundle:Book 
    

    우리는 getUsers있을 것이다()가있는 ArrayCollection을 반환하는 방법. 나뭇 가지의 디스플레이에서

    , 우리는 같은 것을 할 수 있습니다

    당신이 책 엔티티의 방법 getUsers을 만들 수 있어야 책과 사용자 사이에 MTOM을 추가 한 경우
    {% for book in collectionWithBooks.books %} 
        {% if app.user in book.users %}You have read this book.{% endif %} 
    {% endfor %}