如何查询在doctrine odm中嵌入特定项目的所有项目

时间:2012-06-14 14:29:29

标签: symfony doctrine doctrine-odm doctrine-query

我有点评论,可以喜欢它们。喜欢的内容保存在Comments EmbedMany(targetDocument=User)

我想查询特定用户喜欢的所有Comments,我该怎么做?

我想到了类似的东西:

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

但这似乎不起作用。

1 个答案:

答案 0 :(得分: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();