如何强制 Doctrine MongoDB ODM 文档代理转换为“原始”文档代理文档?
我有一个在文档 User 中引用的文档 Person。当我检索 User 时,它没有嵌入 Person 对象,而是嵌入了 Person 代理对象。有没有办法“强制”代理成为“完整”文档(因此 Person proxy => Person)。
我尝试调用一个方法来检索附加数据(因此 __load 被触发,但该对象仍然是“代理”版本。
我希望有人可以比 ODM 的文档更清楚地说明这一点。
I have a document Person referenced in document User. When I retrieve User, it doesn't have a Person object embedded, but a Person proxy object. Is there a way to "force" the proxy to become a "full" document (so Person proxy => Person).
I've tried calling a method to retrieve additional data (so __load gets triggered, but the object remains the 'proxy' version.
I hope someone can shed more light on this than the ODM's documention does.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以通过 启动参考来完成此操作。
示例文档:
使用 QueryBuilder:
You can accomplish this by Priming References.
Example Documents:
Using the QueryBuilder:
您不需要提取原始对象,因为 Proxy 类对您的代码应该 100% 透明。
如果您需要序列化文档(例如通过 API 发送文档),请务必在文档上正确实现
serialize()
方法。如果您仍然需要在没有代理的情况下获取引用的文档,您可以使用
prime()
来获取它,或者使用指定enchant(false)
的单独查询来获取它:请参阅:
Doctrine ODM 文档:禁用水合 了解更多信息。
You shouldn't need to extract the original object, since the Proxy class should be 100% transparent to your code.
If you need to serialize the document, for example to send it through an API, be sure to correctly implement the
serialize()
method on your Document.If you still need to get the referenced document without the proxy, you can either
prime()
it or fetch it with a separate query specifying thehydrate(false)
:See:
Doctrine ODM Doc: Disabling hydration for more info.