Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用ODM将一个文档存储在另一个文档中?_Php_Mongodb_Symfony_Doctrine Orm_Doctrine Odm - Fatal编程技术网

Php 如何使用ODM将一个文档存储在另一个文档中?

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(); } 我不想单独收集评论。我想把它们保存在每篇文章中。我想这就是你想要的: 但请注意,注释并不

如何使用ODM将一个文档存储在另一个文档中

我在文档中没有看到数组或Json类型

我希望能够做到以下几点:

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();