3

我是 ORM 的新手,但已经对其可能性印象深刻。

在设计类似 Facebook 的消息系统(允许多用户聊天的消息线程)时,我遇到了一个我不知道如何解决的问题。

在我用 DocumentManager::find(...) 加载 MessageThread 后,我得到了包含所有消息的整个 MessageThread 对象。由于内存限制,这可能不是一个好主意。

所以我的问题是,是否有一种方法,如何按需动态加载消息,所以我得到 MessageThread 对象,但是在访问消息属性时,它们可能会以 50 条消息的形式动态加载?

谢谢你。

这些是 User、Message 和 MessageThread 类。

使用 Doctrine MongoDB ODM

class User {
    /** @Id */
    protected $id;  
}

class Message
{
    /** @Id */
    protected $id;

    /** @ReferenceOne(targetDocument="User") */
    protected $sender;

    /** @String */
    protected $body;

    /** @Date */
    protected $sent;

    /** @EmbedMany */
    protected $read;
}


class MessageThread
{
     /** @Id */
     protected $id;

     ...

     /** @ReferenceMany(targetDocument="User") */
     protected $participants;

     //Maybe EmbedMany is better in this case
     /**
     * @ReferenceMany(
     *      targetDocument="Message",
     * )
     */
     protected $messages;

     ...
}
4

0 回答 0