将带有引用的关联数组作为值保存在教义-mongodb中
Posted
技术标签:
【中文标题】将带有引用的关联数组作为值保存在教义-mongodb中【英文标题】:Saving an associative array with references as values in doctrine-mongodb 【发布时间】:2013-01-09 07:08:31 【问题描述】:如何将文档中的字段映射为关联数组,其值是对另一个文档的引用?
假设我有一个文档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("...")
那么我该如何映射Image
文档中的files
字段呢?
【问题讨论】:
【参考方案1】:在 Doctrine 的 ArrayCollection 中使用“set”策略
/** @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
【讨论】:
以上是关于将带有引用的关联数组作为值保存在教义-mongodb中的主要内容,如果未能解决你的问题,请参考以下文章