如何使用Doctrine ODM将文档存储在另一个文档中?
我没有在文档中看到Array或Json类型。
我希望能够做到这样的事情:
class Post {
/**
* @MongoDB\String
*/
protected $body;
/**
* @MongoDB\Array
*/
protected $comments = array();
}
我不想单独收集评论。我想把它们保存在每个帖子里。
答案 0 :(得分:2)
/**
* @MongoDB\Document
*/
class Post
{
/**
* @MongoDB\Id
*/
private $id;
/**
* @MongoDB\String
*/
private $body;
/**
* @MongoDB\EmbedMany(targetDocument="Comment")
*/
private $comments;
public function __construct()
{
$this->comments = new ArrayCollection();
}
}
/**
* @MongoDB\EmbeddedDocument
*/
class Comment
{
/**
* @MongoDB\String
*/
private $body;
}
但请注意,评论不适合嵌入 - 与MongoDB中最流行的嵌入示例相反。我也开始将注释作为嵌入,但后来遇到了一些问题并决定将它们存储在一个单独的集合中。我不记得所有的问题,但主要的是无法对数据库方面的注释进行排序。快速解决方案是在客户端对它们进行排序,但是当涉及到分页时,它只是不能扩展。
答案 1 :(得分:0)
答案 2 :(得分:-1)
在我的__construct()中我需要
new \Doctrine\Common\Collections\ArrayCollection();
你只有
new ArrayCollection();