我现在已经打了好几个小时了,我放弃了。也许有人会帮忙。
我有这些文件:
/** 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
中。我不明白。
换句话说 - 我首先坚持一些图像。比我创建新用户并设置它的个人资料照片来引用这些图像。然后我坚持用户,但对图像的引用丢失了......