繁体   English   中英

Symfony2 MappedSuperClass和doctrine:generate:entities

[英]Symfony2 MappedSuperClass and doctrine:generate:entities

我有一个“Offer”类(MapperSuperclass)和另外两个扩展它的类,“PrivateOffer”和“PublicOffer”。

我遇到的问题是,当我运行“doctrine:generate:entities”命令时,“PrivateOffer”和“PublicOffer”这两个类都填充了与MappedSuperclass“Offer”类相同的属性,以及它的getter和setter方法。

如果我删除它们并仅在“Offer”类中使用它们,那么“doctrine:schema:update”可以正常工作,但是我需要再次运行“doctrine:generate:entities”,因此每次我的扩展类都会丢失它。

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

谢谢你们 :)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM