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 这样的内部功能 - 这可能或可能不相关,我不知道......我希望不是(我的问题是否到目前为止在 IRC 上没有得到答复

然而,Character 的一个嵌入文档中的单个更改会触发这些查询(实际上应该只与它相关,在它之前有刷新,并且在更改之前再次设置的标志上的记录器内部的条件

记录器转储:

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是核心部分 -> 但此更改从未反映在数据库中

  • 没有触发 php 错误/异常
  • mongo的日志显示没有错误
  • 通常 Mongo 和 Doctrine\ODM\Mongo 运行良好,实体得到持久化、更新、删除......

我在哪里可以进一步搜索或者我可以做些什么来解决这个问题谢谢

4

2 回答 2

0

这很尴尬,但问题是我希望 EmbeddedDocuments 被索引(如关联数组)......然而,这是在一个实际的 Doctrine 维护的属性上完成的,所以它触发了重新推送 EmbeddedDocument,丢弃了更改

于 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 回答