Doctrine MongoDB ODM不会持久存在

时间:2017-03-22 11:08:06

标签: php mongodb doctrine-orm doctrine doctrine-odm

我尝试使用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通常会持久化并检索文档。

1 个答案:

答案 0 :(得分:2)

我已经弄清楚出了什么问题。我只使用嵌入式文档,而它必须至少有一个根文档。最初所有这些都被标记为文档,这就是为什么我能够坚持它们,它与数据库删除无关。

所以,我试图仅保留一个包含EmbeddedDocuments的复合词。

解决方案是为标记为Document的复合创建根包装。