Symfony2 MongoDB Doctrine Inheritance



我有一个小问题,我试图理解徒然…我有2节课。一个是抽象文档"SpecificIndividual",另一个是常规文档"Individual"。

这就是我想做的:SpecificIndividual有一些属性和一些getter/setter方法。Individual继承了SpecificIndividual,并拥有自己的属性和getter/setter方法。

我使用了COLLECTION_PER_CLASS类型的MappedSuperClass继承。

我的问题是,当我使用"doctrine:mongodb:generate:documents"命令时,它生成抽象类的所有getter/setter方法(这就是我想要的),子类的所有getter/setter方法(这也是我想要的),但它将所有抽象类的getter/setter方法复制到子类中(这在继承中没有任何意义)。

我可能做错了什么,因为它工作时,我使用MySQL和实体,但自从我搬到MongoDB,我找不到正确的方法来做到这一点。

以下是我的类:首先,SpecificIndividual:

namespace SpecificBundleDocument;
use DoctrineODMMongoDBMappingAnnotations as MongoDB;
use DoctrineCommonCollectionsArrayCollection;
/**
 * SpecificIndividual
 *
 * @MongoDBDocument
 * @MongoDBInheritanceType("COLLECTION_PER_CLASS")
 */
abstract class Individual
{
    /**
     * @MongoDBId
     */
    protected $individual_id;
    /**
     * @MongoDBBoolean
     */
    protected $chiped;
    /**
     * Get individualId
     *
     * @return id $individualId
     */
    public function getIndividualId()
    {
        return $this->individual_id;
    }
    /**
     * Set chiped
     *
     * @param boolean $chiped
     * @return self
     */
    public function setChiped($chiped)
    {
        $this->chiped = $chiped;
        return $this;
    }
    /**
     * Get chiped
     *
     * @return boolean $chiped
     */
    public function getChiped()
    {
        return $this->chiped;
    }
}

和子类Individual:

namespace ChildBundleDocument;
use DoctrineODMMongoDBMappingAnnotations as MongoDB;
use SpecificBundleDocumentIndividual as SpecificIndividual;
/**
 * Individual
 *
 * @MongoDBDocument(collection="individuals")
 */
class Individual extends SpecificIndividual
{
    /**
     * @MongoDBString
     */
    protected $someString;
    /**
     * Constructor
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Set someString
     *
     * @param String $someString
     * @return self
     */
    public function setSomeString(String $someString)
    {
        $this->someString = $someString;
        return $this;
    }
    /**
     * Get someString
     *
     * @return String $someString
     */
    public function getSomeString()
    {
        return $this->someString;
    }
}

我指望你们所有人的帮助!

你应该添加"@MongoDBMappedSuperclass"到你的抽象类的注释

链接到文档http://doctrine-orm.readthedocs.org/projects/doctrine-mongodb-odm/en/latest/reference/inheritance-mapping.html

你的代码示例

namespace SpecificBundleDocument;
use DoctrineODMMongoDBMappingAnnotations as MongoDB;
use DoctrineCommonCollectionsArrayCollection;
/**
 * SpecificIndividual
 * 
 * @MongoDBMappedSuperclass
 * @MongoDBDocument
 * @MongoDBInheritanceType("COLLECTION_PER_CLASS")
 */
abstract class Individual
{

相关内容

  • 没有找到相关文章

最新更新