我有一个小问题,我试图理解徒然…我有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
{