MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Insertion d'un objet PHP dans une base de données MONGO

Le moyen le plus simple est probablement de rendre votre objet "castable" dans un tableau.

Si les propriétés que vous souhaitez stocker sont public , vous pouvez simplement faire :

$array = (array)$foo;

Sinon, un toArray ou lui faire implémenter un Iterator l'interface fonctionnera :

class Foo implements IteratorAggregate {

   protected $bar = 'hello';

   protected $baz = 'world';

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

}

Évidemment, vous pouvez également utiliser get_object_vars , Reflection et autres au lieu de coder en dur la liste des propriétés dans le getIterator méthode.

Ensuite, juste :

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

Selon la manière dont vous souhaitez stocker vos objets, vous pouvez utiliser des DBRefs au lieu de stocker tous les objets imbriqués en même temps, afin de pouvoir facilement find séparément ensuite. Sinon, créez simplement votre toArray méthode récursive.