2011-09-05 53 views
1

我使用Doctrine 2 ODM \ MongoDB的(這和依賴GIT所有最新的)+ PHP擴展蒙戈(V1.1.4)+蒙戈(v1.8.3最新的x64)的MongoDB沒有更新

在一些情況下,當我更改實體時,它不會更新

在一個嵌入式實體中,我有一個反向引用它的父級,以解決http://groups.google.com/group/doctrine-dev/browse_thread/thread/016422b2cc9dcec9?pli=1(如何獲取嵌入文檔中的父文檔?),而不使用內部功能如UnitOfWork - 這可能或可能不相關,我不知道...我希望沒有(我的問題是否可以在IRC上未回答迄今

然而,一個字符的嵌入式文檔中的單個更改會觸發這些查詢(應該只與它相關,在它之前已經刷新了,並且標誌內部的條件在更改之前再次設置了標記

記錄器轉儲:

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的錯誤/異常觸發
  • 蒙戈的日誌顯示沒有錯誤
  • 一般蒙戈和學說\ ODM \蒙戈運行良好,實體獲得持久化,更新,刪除...

我在哪裏可以進一步搜索或我能做些什麼來解決這個問題 謝謝

回答

0

這是尷尬的,但問題是,我想EmbeddedDocuments索引(像關聯數組)...然而,這是在一個實際的Doctrine維護屬性,所以它觸發重新推入EmbeddedDocument,丟棄更改

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

如果你解釋你發佈的代碼會更好。 – 2012-10-29 00:22:31