Symfony2 MappedSuperClass和doctrine:generate:entities

时间:2014-09-09 16:12:31

标签: symfony doctrine mappedsuperclass

我有一个"优惠" class(MapperSuperclass)和另外两个扩展它的类," PrivateOffer"和#34; PublicOffer"。

我遇到的问题是,当我运行" doctrine:generate:entities"命令,两个类" PrivateOffer"和#34; PublicOffer"完全具有与MappedSuperclass相同的属性"提供"类,以及它的getter和setter方法。

如果我删除它们并仅在"提供" class," doctrine:schema:update"运作良好,但我需要运行" doctrine:generate:entities"再次如此,它每次我的扩展课程都会毁了。

为什么" doctrine:generate:entities"如果它们扩展了MappedSupperclass,那么复制这两个类中的所有属性和setter / getter方法?

谢谢大家:)

OfferClass:     

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

PublicOfferClass:

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

1 个答案:

答案 0 :(得分:11)

这是Doctrine中已知的行为(不是说:bug):在您的方案中,所有实体属性必须是私有。只能通过吸气剂访问它们。