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