我有一个php对象,我想存储在我的Mongo数据库中.将对象存储在数据库中的最佳方法是什么?我正在考虑循环对象并创建一个数组,但这是一个复杂的对象,也有子对象.谢谢
最简单的方法可能是使对象"可转换"为数组.
如果您要存储的属性是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方法递归.