2012-06-14 4 views
2

뭔가 의견이 있으며이를 좋아할 수도 있습니다. 좋아요는 CommentsEmbedMany(targetDocument=User)으로 저장됩니다.특정 항목이 doctrine odm에 임베드 된 모든 항목을 쿼리하는 방법

특정 사용자가 모두 Comments을 쿼리하고 싶습니다. 어떻게해야합니까?

나는 같은 생각 :

$dm->createQueryBuilder('Comment') 
    ->field('likes.id') 
    ->in(array($user->getId())) 
    ->getQuery() 
    ->execute(); 

하지만이 작동하지 않습니다.

답변

3

임베드 된 문서를 일반 필드 인 것처럼 쿼리 할 수 ​​있습니다. 그러나 형식은 ObjectId입니다. 따라서 수동으로 MongoId를 작성하여 조회해야합니다.

$dm->createQueryBuilder('Comment') 
    ->field('likes.$id')->equals(new \MongoId($user->getId())) 
    ->getQuery() 
    ->execute(); 

그냥 참고로, 참조 것이 될 것이다 :

$dm->createQueryBuilder('Comment') 
    ->field('likes')->references($user) 
    ->getQuery() 
    ->execute();