1

Doctrine 2 ODM\MongoDB (これと依存関係はすべて GIT から最新のもの) + PHP Mongo 拡張 (v1.1.4) + Mongo (v1.8.3 x64 最新) を使用します

いくつかのケースでは、エンティティを変更しても更新されないことがあります

埋め込みエンティティでは、 http://groups.google.com/group/doctrine-dev/browse_thread/thread/016422b2cc9dcec9? pli= 1 (埋め込みドキュメント内の親ドキュメントを取得するには? ) UnitOfWorkのような内部機能を使用せずに - これは関連するかもしれませんし、関連しないかもしれません。

ただし、キャラクターの埋め込みドキュメントの1つを1回変更すると、これらのクエリがトリガーされます(実際にはそれにのみ関連する必要があります。その前にフラッシュがあり、変更の直前に再度設定されたフラグのロガー内の条件があります

ロガーのダンプ:

array(6) {
   "update" => TRUE
   "query" => array(1) {
      "_id" => MongoId(1) {
         "$id" => "4e3143be662c32400d000006" (24)
      }
   }
   "newObj" => array(1) {
      "$set" => array(2) {
         "components.destructible.hp" => 99.28706276
         "options.character" => array(3) {
            "$ref" => "characters" (10)
            "$id" => MongoId(1) { ... }
            "$db" => "nuclearRain" (11)
         }
      }
   }
   "options" => array(0) 
   "db" => "someDB" (11)
   "collection" => "characters" (10)
}
array(6) {
   "update" => TRUE
   "query" => array(1) {
      "_id" => MongoId(1) {
         "$id" => "4e553306662c32680800054b" (24)
      }
   }
   "newObj" => array(1) {
      "$set" => array(1) {
         "createdBy" => array(3) {
            "$ref" => "characters" (10)
            "$id" => MongoId(1) { ... }
            "$db" => "nuclearRain" (11)
         }
      }
   }
   "options" => array(0) 
   "db" => "someDB" (11)
   "collection" => "worlds" (6)
}
array(6) {
   "update" => TRUE
   "query" => array(1) {
      "_id" => MongoId(1) {
         "$id" => "4e553306662c32680800054c" (24)
      }
   }
   "newObj" => array(1) {
      "$set" => array(1) {
         "world" => array(3) {
            "$ref" => "worlds" (6)
            "$id" => MongoId(1) { ... }
            "$db" => "nuclearRain" (11)
         }
      }
   }
   "options" => array(0) 
   "db" => "someDB" (11)
   "collection" => "games" (5)
}

初期化コード: http://pastebin.com/1dKagqry

"components.destructible.hp" => 99.28706276がコア部分 -> それでもこの変更は DB に反映されない

  • トリガーされたphpエラー/例外はありません
  • mongo のログにエラーは表示されません
  • 通常、Mongo と Doctrine\ODM\Mongo は正常に動作し、エンティティは永続化、更新、削除されます...

この問題を解決するためにどこでさらに検索できますか、またはどうすればよいですか ありがとうございます

4

2 に答える 2

0

It is awkward, but the issue is that I wanted the EmbeddedDocuments indexed (like associative array)... this was however done on an actual Doctrine-maintained property, so it triggered re-pushing the EmbeddedDocument, discarding the changes

于 2011-09-18T10:57:04.073 に答える
-1
 $friend = Zend_Registry::get('doctrine')->getDocumentManager()->createQueryBuilder('App\document\Message')->update()->field('unread')->set(TRUE)->field('viewer_id')->equals(10001)-> getQuery(array('multiple' => true))->execute();
于 2012-04-18T09:38:52.013 に答える