Php 如何使用ODM将一个文档存储在另一个文档中?
如何使用ODM将一个文档存储在另一个文档中 我在文档中没有看到数组或Json类型 我希望能够做到以下几点:Php 如何使用ODM将一个文档存储在另一个文档中?,php,mongodb,symfony,doctrine-orm,doctrine-odm,Php,Mongodb,Symfony,Doctrine Orm,Doctrine Odm,如何使用ODM将一个文档存储在另一个文档中 我在文档中没有看到数组或Json类型 我希望能够做到以下几点: class Post { /** * @MongoDB\String */ protected $body; /** * @MongoDB\Array */ protected $comments = array(); } 我不想单独收集评论。我想把它们保存在每篇文章中。我想这就是你想要的: 但请注意,注释并不
class Post {
/**
* @MongoDB\String
*/
protected $body;
/**
* @MongoDB\Array
*/
protected $comments = array();
}
我不想单独收集评论。我想把它们保存在每篇文章中。我想这就是你想要的: 但请注意,注释并不是嵌入的好选择——这可能与MongoDB中最流行的嵌入示例相反。我开始也将注释作为嵌入,但后来遇到了一些问题,决定将它们存储在单独的集合中。我不记得所有的问题,但主要的问题是无法在数据库端对注释进行排序。快速的解决方案是在客户端对它们进行排序,但是当涉及到分页时,它就无法扩展。在我的_构造()中,我需要 你刚才在哪里
new ArrayCollection();
我在询问之前尝试过这个,但它说ArrayCollection()无效或其他什么。Lemme checkClass原则\Common\Collections\ArrayCollection不是有效的文档或映射的超类。是否尝试清除缓存?MongodBundle存在一些缓存问题,因此有时您甚至需要在dev env.Btw中清除它,我希望Comment类在代码中的注释
@MongoDB\embeddmany(targetDocument=“Comment”)
中是完全限定的。它应该类似于@MongoDB\EmbedMany(targetDocument=“VendorName\BundleName\Document\Comment”)
。是的,我注意到我必须使用完全限定的类名。
new \Doctrine\Common\Collections\ArrayCollection();
new ArrayCollection();