MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Inserimento di un oggetto PHP in un DB MONGO

Il modo più semplice è probabilmente rendere il tuo oggetto "castabile" in un array.

Se le proprietà che desideri memorizzare sono public , puoi semplicemente fare:

$array = (array)$foo;

Altrimenti, un toArray metodo, o facendogli implementare un Iterator l'interfaccia funzionerà:

class Foo implements IteratorAggregate {

   protected $bar = 'hello';

   protected $baz = 'world';

   public function getIterator() {
       return new ArrayIterator(array(
           'bar' => $this->bar,
           'baz' => $this->baz,
       ));
   }

}

Ovviamente puoi anche usare get_object_vars , Reflection e simili invece di codificare l'elenco delle proprietà in getIterator metodo.

Quindi, solo:

$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);

A seconda di come vuoi archiviare i tuoi oggetti, potresti voler usare DBRefs invece di memorizzare oggetti nidificati tutti in una volta, così puoi facilmente find in seguito separatamente. In caso contrario, crea il tuo toArray metodo ricorsivo.