Doctrine ODM + MongoDB不是空的嵌入文件,持久化为空

时间:2014-05-31 23:03:50

标签: php mongodb doctrine-orm doctrine doctrine-odm

我现在已经打了好几个小时了,我放弃了。也许有人会帮忙。

我有这些文件:

/** ODM\MappedSuperclass */
class Document {

    public function &__get($name) {
        return $this->$name;
    }

    public function __set($name, $value) {
        $this->$name = $value;
    }
}

/** @ODM\Document */
class User extends Document {
    ...

    /** @ODM\EmbedOne(targetDocument="ProfilePhotoContainer") */
    protected $profilePhoto;

    ...
}

/** @ODM\EmbeddedDocument */
class ProfilePhotoContainer extends Document {

    /** @ODM\ReferenceOne(targetDocument="ProfilePhoto", simple="true") */
    protected $main;

    /** @ODM\ReferenceOne(targetDocument="ProfilePhoto", simple="true") */
    protected $big;

    /** @ODM\ReferenceOne(targetDocument="ProfilePhoto", simple="true") */
    protected $medium;

    /** @ODM\ReferenceOne(targetDocument="ProfilePhoto", simple="true") */
    protected $small;
}

/** @ODM\Document */
class ProfilePhoto extends Document {

    /** @ODM\File */
    protected $image;

    /** @ODM\Int */
    protected $size;
}

我将配置文件照片插入多个尺寸版本。作品。然后我想创建新用户并将profilePhoto嵌入文档属性设置为表示每个图像大小版本的每个对象。我设置它并坚持用户。然后,当我查看数据库时,我看到了:

db.User.find().pretty()
{
    "_id": ObjectId("SOME_ID"),
    "profilePhoto": {

    },

    # and other unimportant values
}

对图像的引用不会保留在嵌入文档profilePhoto中。我不明白。

换句话说 - 我首先坚持一些图像。比我创建新用户并设置它的个人资料照片来引用这些图像。然后我坚持用户,但对图像的引用丢失了......

0 个答案:

没有答案