Doctrine - 我可以使用mongo哈希字段来存储php对象吗?

时间:2013-10-05 10:02:54

标签: php mongodb doctrine-orm

假设我有这样的文件:

<?php
use Doctrine\ODM\MongoDB\Mapping\Annotations as Mongo;

/**
 * @Mongo\Document
 */
class Foo
{
    /**
     * @Mongo\Id
     */
    protected $id;

    /**
     * @Mongo\Field(type="hash")
     */
    protected $obj;

    public function setObj($obj);
    {
        $this->obj = $obj;
    }

    public function getObj();
    {
        return $this->obj;
    }
}

$foo = new Foo;
$foo->setObj(new stdClass);

$dm->persist($foo);
$dm->flush();

$dm->refresh($foo);

var_dump($foo->getObj());
//it outputs: NULL

问题是:我被告知它有效,但当我自己尝试时,我无法做到。 教义或蒙戈方面没有任何错误。 它根本没有保存到mongo。

我在PR to payum paypal lib中苦苦挣扎。 在PR中我试图为doctrine mongo mapping添加测试。

P.S。我知道ORM允许使用object类型存储序列化对象。是否有类似的东西,但对于mongo?

P.P.S。它甚至不适用于php数组。

1 个答案:

答案 0 :(得分:0)

我在xml映射中遇到了问题。基本上我将不正确的属性名称设置为fieldName。 Doctime ODM以静默方式跳过它并保存此属性中的更改。设置正确的fieldName有助于我和hash类型正常工作。

提交中的更多详细信息:https://github.com/Payum/PaypalExpressCheckoutNvp/commit/056d7f2061593cfdf543fd391d73f6a200859dca