2011-09-05 4 views
1

J'utilise Doctrine 2 ODM \ MongoDB (cela et dépendances toutes les dernières nouvelles de GIT) + l'extension PHP Mongo (de v1.1.4) + Mongo (v1.8.3 dernière x64)MongoDB ne soit pas mis à jour

Dans plusieurs cas, il Lorsque vous changez une entité, elle n'est pas mise à jour

Dans une entité incorporée, j'ai une référence arrière à son parent, pour résoudre http://groups.google.com/group/doctrine-dev/browse_thread/thread/016422b2cc9dcec9?pli=1 (Comment obtenir un document parent dans un document incorporé?) sans utiliser de fonctionnalités internes comme UnitOfWork - ceci PEUT ou peut ne pas être pertinent, je ne sais pas ... j'espère que non (ma question si elle pourrait être restée sans réponse sur l'IRC jusqu'à présent)

Cependant un seul changement dans l'un des documents de caractères intégrés déclenche ces requêtes (devrait vraiment être pertinente que pour elle, il y a eu flush avant et une condition à l'intérieur de l'enregistreur sur le drapeau qui a été mis à nouveau juste avant le changement)

décharge de l'enregistreur:

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) 
} 

code d'initialisation: http://pastebin.com/1dKagqry

"components.destructible.hp" => 99.28706276 est la partie centrale -> mais ce changement est jamais reflété dans le DB

  • il n'y a pas d'erreur php/exception déclenchée
  • journal de mongo montre aucune erreur
  • généralement mongo et Doctrine \ ODM \ mongo fonctionne très bien, les entités se persistèrent, mis à jour, supprimé ...

Où puis-je effectuer des recherches plus ou que puis-je faire pour résoudre ce problème Merci

Répondre

0

Il est gênant, mais le problème est que je voulais que les EmbeddedDocuments soient indexés (comme un tableau associatif) ... ceci a été fait sur une propriété Doctrine-maintain réelle, donc il a déclenché de repousser le EmbeddedDocument, rejetant les changements

-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

Ce serait mieux si vous avez expliqué le code que vous avez posté. –

Questions connexes