我正在尝试将MongoDB与Doctrine MongoDB ODM 1.1.3和Laravel 5.4一起使用。在我手动删除名为"doctrine"的数据库(我猜是默认数据库名称(以清理其中的垃圾之前,一切都很顺利,所以基本上我只想删除数据库,并希望 Doctrine 会创建一个新的数据库。现在当我试图打电话时
$mgr->persist($divRoot);
$mgr->flush();
它将 ID 分配给$divRoot对象,但不保留它。 即,当我在存储库上调用 findAll()
方法时,它不返回任何内容。而且它不再创建任何数据库。每次我尝试保存$divRoot时,它的字段都会发生变化。我真的很卡住,请帮忙
更新 1
如果我初始化一个新的文档管理器,指定文档的新路径(AnnotationDriver::create($documents)
(,ODM可以正常工作,持久化和检索文档。
我已经弄清楚出了什么问题。我只处理嵌入式文档,而它必须至少是一个根文档。最初它们都被标记为文档,这就是我能够持久保存它们的原因,这与数据库删除无关。
因此,我试图保留仅由嵌入文档组成的复合。
解决方案是为标记为 Document 的复合创建根包装器。