Doctrine Mongo ODM参考3个系列



嗨,我试图引用3个集合,但我在引用2>3时失败了,让我解释一下我要做什么。

我有一个User类,它有referenceposts referenceMany>posts,在posts中我有referenceMany>注释。

注意:Doctrine Mongo ODM+Zend Framework 2

这就像用户写了一篇帖子,然后有人对其进行评论

/** @MongoDBDocument */
class Users {
    /** @MongoDBReferenceMany(targetDocument="Posts", mappedBy="user") */
    private $posts;
}
/** @MongoDBDocument */
class Posts {
    /** @MongoDBId */
    private $wallPostId;
    /** @MongoDBReferenceOne(targetDocument="Users", inversedBy="posts") */
    private $user;
    /** @MongoDBReferenceMany(targetDocument="Comments", mappedBy="post") */
    private $comments;
    /** @MongoDBString */
    private $content;
}
/** @MongoDBDocument */
class Comments {
    /** @MongoDBId */
    private $commentId;
    /** @MongoDBReferenceOne(targetDocument="Posts", inversedBy="comments") */
    private $post;
    /** @MongoDBString */
    private $content;
}

我正在尝试这个代码,以获得任何后的所有评论

$post = $wallPostsAction->getWallPostById("5051d2a1e71a382c1b000000");
$output = "";
$output .= "Wall post content: " . $post->getContent() . "<br>";
//      $comment = new Comments();
//      $comment->setContent("Nice topic!");
//      $comment->setPost($post);
//      $this->dm->persist($comment);
//      $this->dm->flush();
echo count($post->getComments());
foreach($post->getComments() as $comment){
    $output .= " comment: " . $comment->getComment() . "<br>";
}

其中一个文档看起来像这样以供评论:

{
   "_id": ObjectId("---"),
   "post"?: {
     "$ref": "Posts",
     "$id": ObjectId("---"),
     "$db": "db" 
  },
   "content": "Nice topic!" 
}

问题是,为什么当我试图获得特定帖子的评论时,我会得到0计数,但当我试图从用户那里获得帖子时,我可以获得它们。

因为getComments()返回的只是该集合的一个游标。在您开始迭代该集合之前,Doctrine不会运行任何查询来获取信息。

将其添加到getWallPostById方法中的查询中。

->field('comments')->prime(true)

这将告诉条令在你获取帖子时获取关于评论的数据,然后你从getComments中的光标应该有你想要的计数信息。

启动参考

相关内容

  • 没有找到相关文章

最新更新