带有两个判别字段的Doctrine ODM文档

时间:2014-02-07 09:21:11

标签: mongodb symfony doctrine-orm

在一个文档中是否有可能有两个鉴别字段? 我有一个集合Logs in Mongo。每个日志都有一个类别字段和一个操作字段。这些字段的组合形成了Log的结构。

实施例: 我们有一个类别“元素”和子元素“元素”(动作字段)“创建”,“文件”

// Log element.create
{
     //common Log attributes
     category: 'element',
     action: 'create',

     //specific attributes for each Log type
     parent_element: ...
}

// Log element.file
{
     //common Log attributes
     category: 'element',
     action: 'file',

     //specific attributes for each Log type
     file_size: ...
     file_type: ...
}

是否有解决方法如何通过这两个字段从正确的类的文档管理器实例获取? 我尝试创建一个Base Log Class,它具有category属性的dicriminator字段和一个扩展Base Log类的Element Class,而这个类我为action属性设置了dicriminator字段。然后是一个扩展Element的Create Class。但这种方式不起作用'因为doc。 manager返回ony元素实例。

/**
 * @ODM\Document(collection="log")
 * @ODM\InheritanceType("SINGLE_COLLECTION")
 * @ODM\DiscriminatorField("category")
 * @ODM\DiscriminatorMap({
 *      "element"="Element"
 * })
 */
class Log {}  

/**
 * @ODM\Document
 * @ODM\InheritanceType("SINGLE_COLLECTION")
 * @ODM\DiscriminatorField("action")
 * @ODM\DiscriminatorMap({
 *      "create"="Create"
 * })
 */
class Element extends Log{} 

/**
 * @ODM\Document
 */
class Create extends Element{} 

0 个答案:

没有答案