sql >> Base de Datos >  >> NoSQL >> MongoDB

Insertar un objeto PHP en una base de datos MONGO

La forma más fácil es probablemente hacer que su objeto se pueda convertir en una matriz.

Si las propiedades que desea almacenar son public , solo puedes hacer:

$array = (array)$foo;

De lo contrario, un toArray o hacer que implemente un Iterator la interfaz funcionará:

class Foo implements IteratorAggregate {

   protected $bar = 'hello';

   protected $baz = 'world';

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

}

Obviamente, también puedes usar get_object_vars , Reflection y demás en lugar de codificar la lista de propiedades en el getIterator método.

Entonces, solo:

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

Dependiendo de cómo desee almacenar sus objetos, es posible que desee utilizar DBRefs en lugar de almacenar todos los objetos anidados a la vez, para que pueda find fácilmente después por separado. Si no, simplemente haga su toArray método recursivo.