我有一个与php中的Doctrine 2 MongoDB ODM相关的问题。
因此,我有一个EntityA,在EntityA中,我想通过EntityB的ObjectId引用EntityB。因此,在E 110EntityAE 211中,我有一个E 112变量AE 213和下面的Docblock: EntityA“true”)E 215。
问题是,当我称其为setMethod时,它将整个EntityB设置为EntityA,而不仅仅是objectId,这正是我想要做的。
基本上,EntityA看起来是这样的:
ENTITYA {
randomFieldA,
randomFieldB,
EntityB ObjectId
} 有人知道我想要的东西是否像我尝试过的那样有可能吗?还是有人知道更好的方法?
基本上就像这个例子:
/** @Document */
class TopCategory
{
/** @EmbedMany(targetDocument="SubCategory") */
private $subCategories;
}
/** @EmbeddedDocument */
class SubCategory
{
/** @ReferenceOne(targetDocument="Product") */
private $product;
}
/** @Document */
class Product
{
/** @id */
private $id;
/** @String */
private $name;
}现在如何在subCategory->product中只存储产品的id而不是整个产品
发布于 2012-01-17 23:56:16
ODM就是这样工作的。在对象端,将整个Product添加到SubCategory中。
您的Mongo数据库将只存储引用,例如(在Subcategory项目中)
"product": {
"$ref": "Product",
"$id": ObjectId("4b0552b0f0da7d1eb6f126a1")
}要创建这种关系,只需将Product设置为SubCategory,例如
// $product is a persisted Product object
$subcategory->setProduct($product);要从Product获得SubCategory ID,只需使用
$productId = $subcategory->getProduct()->getId();(假设定义了适当的setter和getter方法)
当您希望创建与独立文档的关系时,可以使用引用。如果您可能希望从许多其他文档(如SubCategories)链接到一个文档(如您的产品),则尤其如此。
当您只希望将该文档作为其父文档的一部分时,将使用嵌入式文档。
https://stackoverflow.com/questions/8901673
复制相似问题