「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;
}
}