簡體   English   中英

如何使用Doctrine ODM將文檔存儲在另一個文檔中?

[英]How to store a document inside another document, with Doctrine ODM?

如何使用Doctrine ODM將文檔存儲在另一個文檔中?

我在文檔中沒有看到Array或Json類型。

我希望能夠做這樣的事情:

class Post {

    /**
     * @MongoDB\String
     */
    protected $body;

    /**
     * @MongoDB\Array
     */
    protected $comments = array();

}

我不想單獨收集評論。 我希望它們保存在每個帖子中。

/**
 * @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中嵌入的最流行示例相反。 我也從嵌入評論開始,但后來遇到了一些問題,決定將它們存儲在單獨的集合中。 我不記得所有問題,但主要問題是無法在數據庫端對注釋進行排序。 快速的解決方案是在客戶端對它們進行排序,但是在分頁方面,它只是無法擴展。

在我的__construct()中,我需要

new \Doctrine\Common\Collections\ArrayCollection();

你在那里

new ArrayCollection();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM