Привет, я пытаюсь сослаться на 3 коллекции, но мне не удается сослаться на 2 > 3 ссылки, позвольте мне объяснить, что я пытаюсь сделать.
У меня есть класс User, в котором есть справочные сообщения referenceMany > Posts, а в сообщениях у меня есть referenceMany > комментарии.
Примечание: Doctrine Mongo ODM + Zend Framework 2
Это что-то вроде того, как пользователь пишет сообщение, а кто-то его комментирует.
/** @MongoDB\Document */
class Users {
/** @MongoDB\ReferenceMany(targetDocument="Posts", mappedBy="user") */
private $posts;
}
/** @MongoDB\Document */
class Posts {
/** @MongoDB\Id */
private $wallPostId;
/** @MongoDB\ReferenceOne(targetDocument="Users", inversedBy="posts") */
private $user;
/** @MongoDB\ReferenceMany(targetDocument="Comments", mappedBy="post") */
private $comments;
/** @MongoDB\String */
private $content;
}
/** @MongoDB\Document */
class Comments {
/** @MongoDB\Id */
private $commentId;
/** @MongoDB\ReferenceOne(targetDocument="Posts", inversedBy="comments") */
private $post;
/** @MongoDB\String */
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 баллов за комментарий, когда пытаюсь получить их для определенного сообщения, но когда я пытаюсь получить сообщения от пользователя, я могу их получить.