5

「Offer」クラス (MapperSuperclass) と、それを拡張する 2 つのクラス「PrivateOffer」と「PublicOffer」があります。

私が抱えている問題は、「doctrine:generate:entities」コマンドを実行すると、「PrivateOffer」と「PublicOffer」の両方のクラスが MappedSuperclass の「Offer」クラスと同じプロパティで満たされ、getter メソッドと setter メソッドになることです。

それらを削除して "Offer" クラスでのみライブすると、"doctrine:schema:update" は期待どおりに機能しますが、"doctrine:generate:entities" を再度実行する必要があるため、拡張クラスが毎回台無しになります。 .

MappedSupperclass を拡張する場合、「doctrine:generate:entities」が両方のクラスのすべてのプロパティとセッター/ゲッター メソッドを複製するのはなぜですか?

皆さん、ありがとうございました :)

オファークラス:

namespace Pro\JobBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
/**
 * Offer
 *
 * @ORM\MappedSuperclass()
 */
class Offer
{
    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255)
     */
    protected $name;

    ....more properties...
}

PrivateOfferClass:

<?php

namespace Pro\JobBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * PrivateOffer
 *
 * @ORM\Table(name="private_offer")
 * @ORM\Entity
 */
class PrivateOffer extends Offer
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
}

パブリックオファークラス:

<?php

namespace Pro\JobBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * PublicOffer
 *
 * @ORM\Table(name="public_offer")
 * @ORM\Entity
 */
class PublicOffer extends Offer
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
}
4

1 に答える 1