参考文档示例:
/** @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":[]} [] []
答案 0 :(得分:0)
使用Doctrine ODM:
$dm = $this->get('doctrine_mongodb')->getManager();
$user = $dm->getRepository('AppBundle:User')->findOneById($id);
$posts = $user->getPosts();