【发布时间】:2012-12-19 06:39:28
【问题描述】:
我正在使用带有 Doctrine MongoDb 包的 Symfony 2。
有两个类有映射:
/**
* @MongoDB\Document
*/
class Consultant
{
/**
* @MongoDB\Id(strategy="NONE")
*/
protected $id;
/**
* @MongoDB\EmbedMany(targetDocument="Specialization", strategy="set")
*/
protected $specs;
}
/**
* @MongoDB\Document
*/
class Specialization
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\String
*/
protected $name;
/**
* @MongoDB\Boolean
*/
protected $visible = true;
}
保存顾问后,Mongo 记录如下:
{
"_id": "1",
"name": "Manager",
"specs": {
"0": {
"_id": ObjectId("50d071ac6146a1f342000001"),
"name": "Support",
"visible": false
},
"1": {
"_id": ObjectId("50d069336146a10244000000"),
"name": "Orders",
"visible": false
}
}
}
除了冗余字段“可见”之外,一切都很好。
有没有办法使用@EmbedMany注解来指定Doctrine应该嵌入哪些字段?
【问题讨论】:
-
如果你不打算嵌入,为什么对象有这个字段?你应该在类和它的嵌入类之间建立 1:1 的关系。
-
好吧,我有单独的集合
Specialization。这是一种字典,与Consultant分开管理。我决定对方案进行非规范化并将一个文档嵌入到另一个文档中。
标签: php mongodb symfony doctrine-orm