2011-07-06 2 views
0

Certains étrange Problème:MongoDB et PHP desserre _id lors de l'insertion 2 objets

J'ai un objet avec des propriétés, si l'on propriétée est barbante une sorcière d'objet a déjà un « _id », MongoDB ne crée pas un « _id » pour le premier objet?

// convert properties to array 
    $save = $this->model->toArray(); 

    foreach ($save as $key => $val) { 
     // value is an object, convert to array 
     if ($val instanceof NcX_Mongo_Model) { 
      $save[$key] = $val->toArray(); 
     } 
    } 

    // update 
    if ($this->model->getId()) { 
     $this->collection->save($save); 
    } else { 
     error_log('insert'); 
     // insert 
     $this->collection->insert($save); 
    } 

plus .. Code:

$event = new My_Model_Mongo_Event(); 
$location = new My_Model_Mongo_Location(); 

$event->setLocation($location); 
$event->save(); 
// no id set 

$event->setLocation($location->toArray()); 
$event->save(); 
// everything works.. and id is set to event 

Répondre

0

Got, je n'ai aucune idée pourquoi, mais quand vous le faites:

// update 
if ($this->model->getId()) { 
    $this->collection->save($save); 
} else { 
    // insert 
    $this->collection->insert($save); 

    // if i dont do this, the model has no id when inserting 2 objects 
    $this->model->setId($save['_id']); 
} 

L'ID est défini, il semble logique, mais cela fonctionne sans "setId" lors de l'insertion d'un tableau simple.

Questions connexes