doctrine odm查询引用很多字段

时间:2016-08-14 21:23:19

标签: php mongodb symfony doctrine-orm odm

参考文档示例:

/** @Document */
class BlogPost
{
    // ...

    /** @ReferenceOne(targetDocument="User", inversedBy="posts") */
    private $user;
}

/** @Document */
class User
{
    // ...

    /** @ReferenceMany(targetDocument="BlogPost", mappedBy="user") */
    private $posts;
}

有什么方法可以查询用户实体并检索他的所有帖子?

我的意思是我可以使用示例查询:

db.BlogPost.find({ 'user.$id' : user.id })

但如果我想这样做:

db.User.find({ 'id' : id })

通过用户属性$ posts

访问用户帖子

这可以归档吗?

修改

当我执行查询时,我们可以找到日志:

[2016-08-15 17:13:45] doctrine.DEBUG: MongoDB query: {"find":true,"query":{"_id":{}},"fields":[],"db":"base","collection":"User"} [] []
[2016-08-15 17:13:45] doctrine.DEBUG: MongoDB query: {"limit":true,"limitNum":1,"query":{"_id":{}},"fields":[]} [] []
[2016-08-15 17:13:45] doctrine.DEBUG: MongoDB query: {"limit":true,"limitNum":null,"query":{"_id":{}},"fields":[]} [] []

1 个答案:

答案 0 :(得分:0)

使用Doctrine ODM:

$dm = $this->get('doctrine_mongodb')->getManager();

$user = $dm->getRepository('AppBundle:User')->findOneById($id);
$posts = $user->getPosts();