如何将文档中的字段映射为其值是对另一个文档的引用的关联数组?
假设我有一个文档File
代表磁盘上的某个文件。像这样:
/** @Document */
class File {
/** @Id */
protected $id;
/** @String */
protected $filename;
// Getter and setters omitted
}
另一个表示图像的文档,用于存储对不同图像大小的引用。像这样:
/** @Document */
class Image {
/** @Id */
protected $id;
/** ???? */
protected $files;
// Getter and setters omitted
}
我现在希望能够存储对图像文档中文件大小的文件的一些引用。例如:
$file1 = new File('/some/path/to/a/file');
$file2 = new File('/some/path/to/another/file');
$image = new Image();
$image->setFiles(array('50x50' => $file1,'100x100' => $file2));
生成的MongoDB文档应如下所示:
{
"_id" : ObjectId("...."),
"files" : {
"50x50" : {
"$ref" : "files",
"$id" : ObjectId("...")
},
"100x100" : {
"$ref" : "files",
"$id" : ObjectId("...")
}
}
}
那么如何映射files
文档中的Image
字段?
答案 0 :(得分:0)
将“set”策略与Doctrine的ArrayCollection一起使用
/** @Document */
class Image {
/** @Id */
protected $id;
/**
* @ReferenceMany(targetDocument="File", strategy="set")
*/
protected $files;
public function setFile($resolution, File $file)
{
$this->files[$resolution] = $file;
}
// Getter and setters omitted
}