1

我正在将 Symfony 2 与 Doctrine Mongodb ODM 一起使用,并尝试创建一些与我已经创建并尝试加载的固定装置一起工作的索引

  php -f app/console doctrine:mongodb:fixtures:load

当我在我的文档上创建索引时,加载固定装置失败

  [Doctrine\ODM\MongoDB\MongoDBException]                                                                   
  Cannot execute unindexed queries on Updatemi\LibraryBundle\Document\UpdateTerm. Unindexed fields: update

ODM 不会自己生成索引吗?

4

1 回答 1

2

经过一番研究,我找到了解决这个问题的方法。

Doctrine 不会自动创建索引,删除后,您必须自己执行此操作,使用命令

sf doctrine:mongodb:schema:create --index 

这并不能解决固定装置的问题,因为它们在执行代码之前会删除所有内容。

但是也有解决这个问题的方法!

在您的固定装置文件的开头,添加一行为您重新生成索引。

    $dm = $this->container->get('doctrine.odm.mongodb.document_manager');
    $dm->getSchemaManager()->ensureIndexes();

还有一个关于教义_fixtures 库的拉取请求,以避免在夹具加载时删除索引,因此希望不再需要此修复。

https://github.com/doctrine/data-fixtures/pull/118

于 2014-05-22T10:35:37.367 回答