将PHP对象插入MONGO DB

gdo*_*eod 3 php mongodb

我有一个php对象,我想存储在我的Mongo数据库中.将对象存储在数据库中的最佳方法是什么?我正在考虑循环对象并创建一个数组,但这是一个复杂的对象,也有子对象.谢谢

net*_*der 8

最简单的方法可能是使对象"可转换"为数组.

如果您要存储的属性是public,您可以这样做:

$array = (array)$foo;
Run Code Online (Sandbox Code Playgroud)

否则,toArray方法或使其实现Iterator接口将起作用:

class Foo implements IteratorAggregate {

   protected $bar = 'hello';

   protected $baz = 'world';

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

}
Run Code Online (Sandbox Code Playgroud)

显然,你也可以使用get_object_varsReflection等代替硬编码方法中的属性列表getIterator.

然后,只是:

$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);
Run Code Online (Sandbox Code Playgroud)

根据您希望如何存储对象,您可能希望使用DBRef而不是一次性存储嵌套对象,因此您可以在find以后单独使用它们.如果没有,只需使您的toArray方法递归.