2016-08-14 58 views
1

以文档例如:学说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 }) 

,并获得用户的帖子通过用户属性$帖子

可以这样被存档?

编辑

当我执行,我们可以发现,日志查询:

[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":[]} [] [] 

回答

0

教义ODM:

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

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

我已经尝试和getPosts返回一个空集,别的我需要检查或检查可能导致这种情况发生? – bitgandtter

+0

你用教条填充你的数据库吗? – Alsatian

+0

阅读此:http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/reference-mapping.html#storing-references – Alsatian