4

無駄に理解しようとした小さな問題があります... 私は2つのクラスを持っています。1 つは「SpecificIndividual」と呼ばれる抽象的な Document であり、もう 1 つは「Individual」と呼ばれる通常の Document です。

これが私がやりたいことです: SpecificIndividual には、いくつかのプロパティといくつかのゲッター/セッター メソッドがあります。Individual は SpecificIndividual を継承し、独自のプロパティとゲッター/セッター メソッドを持ちます。

COLLECTION_PER_CLASS タイプで MappedSuperClass 継承を使用しました。

私の問題は、「doctrine:mongodb:generate:documents」コマンドを使用すると、抽象クラスのすべてのゲッター/セッターメソッド(これが私が望むものです)、子クラスのすべてのゲッター/セッターメソッド(これも私が望むもの)しかし、それはすべての抽象クラスのゲッター/セッターメソッドを子クラスに複製します(これは継承ではまったく意味がありません)。

MySQL と Entities を使用していたときは機能していたので、おそらく何か間違ったことをしているのですが、MongoDB に移行して以来、これを行う適切な方法が見つかりません。

ここに私のクラスがあります:まず、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;
    }
}

皆さんの助けを頼りにしています!前もって感謝します。

4

1 に答える 1