1

Doctrine Mongodb ODM で Symfony 2 を使用しており、既に作成してロードしようとしているフィクスチャと連携するいくつかのインデックスを作成しようとしています。

  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();

フィクスチャの読み込み時にインデックスを削除しないように、doctrine_fixtures ライブラリにもプル リクエストがあるため、この修正はもう必要ありません。

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

于 2014-05-22T10:35:37.367 に答える