首先要做的事情。我可能完全偏离了这一点。我一般都在学习Mongo和NOSql解决方案。我们正在编写的应用程序中有一个新组件,而不是坐下来搞乱关系数据库,我们想要使用更适合我们对象的东西。
让我们举一个简单的例子:
Class User extends \Model {
public $name;
public $hobbies;
}
$ name只是一个字符串。但是我们可以说$ hobbies是一个对象或一组对象。我希望能够将它放入数据存储中,以后能够检索它。
起初,我走下了将物体分解成阵列并将其存放在Mongo然后将其拉回并填充物体的道路。使用我制作的通用导入和导出方法非常简单。当我有一些具有其他对象作为成员变量的健壮对象时,问题就出现了,等等。那时我仍然可以导出到一个多维数组并存储它。但是导回到对象变得有问题。
我能做的另一个选择就是seralize()对象并将其存储在mongo中以及一些描述性数据。
SOOOOO。想法?
我的部分问题是我是NOSql产品的新手,并不确定他们的全部限制/潜力。我只是看着Mongo错了,并试图让它做一些它不应该做的事情?我宁愿不使用某些第三方模块,而宁愿写一些简单轻巧的东西。
答案 0 :(得分:2)
虽然我不想使用第三方应用程序,但Doctrine的Mongo ODM似乎完全符合我的要求。设置好了,到目前为止似乎运作良好。
答案 1 :(得分:0)
我认为序列化是走到这里的方式。然后,您可以为每个类使用魔术方法__sleep
和__wakeup
来处理任何棘手的情况。
答案 2 :(得分:0)
此处的另一个选项是将对象序列化为数组而不是仅使用“序列化”。如果我没有弄错,你实际上可以覆盖这些子对象中的“serialize”方法,并且基本上让它们自己序列化为数组(或者更具体地说是散列表)。
如果Doctrine为你做这件事,那就更好了。但如果你只是想要这个功能,你可以自己做饭。