gpt4 book ai didi

mongodb - Symfony2 MongoDB 原则继承

转载 作者:可可西里 更新时间:2023-11-01 09:14:21 26 4
gpt4 key购买 nike

我遇到了一个小问题,我试图理解但没有成功......我有2节课。一个是名为“SpecificIndividual”的抽象文档,另一个是名为“Individual”的常规文档。

这就是我想要做的:SpecificIndividual 有一些属性和一些 getters/setters 方法。Individual继承SpecificIndividual,拥有自己的属性和getters/setters方法。

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

我的问题是,当我使用“doctrine:mongodb:generate:documents”命令时,它会为抽象类生成所有 getters/setters 方法(这就是我想要的),为子类生成所有 getters/setters 方法(这也是我想要的)但是它将所有抽象类的 getters/setters 方法复制到子类中(这在继承中完全没有意义)。

我可能做错了什么,因为它在我使用 MySQL 和 Entities 时有效,但自从我转移到 MongoDB 后,我找不到执行此操作的正确方法。

这是我的类(class):首先,SpecificIndividual:

namespace SpecificBundle\Document;

use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
use Doctrine\Common\Collections\ArrayCollection;

/**
* SpecificIndividual
*
* @MongoDB\Document
* @MongoDB\InheritanceType("COLLECTION_PER_CLASS")
*/
abstract class Individual
{
/**
* @MongoDB\Id
*/
protected $individual_id;

/**
* @MongoDB\Boolean
*/
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 ChildBundle\Document;

use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;

use SpecificBundle\Document\Individual as SpecificIndividual;

/**
* Individual
*
* @MongoDB\Document(collection="individuals")
*/
class Individual extends SpecificIndividual
{
/**
* @MongoDB\String
*/
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;
}
}

我指望你们所有人提供帮助!提前致谢。

最佳答案

你应该在抽象类的注解中添加“@MongoDB\MappedSuperclass”

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

您的代码示例

namespace SpecificBundle\Document;

use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
use Doctrine\Common\Collections\ArrayCollection;

/**
* SpecificIndividual
*
* @MongoDB\MappedSuperclass
* @MongoDB\Document
* @MongoDB\InheritanceType("COLLECTION_PER_CLASS")
*/
abstract class Individual
{

关于mongodb - Symfony2 MongoDB 原则继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23928265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com