Symfony2 MappedSuperClass 和 Doctrine :generate:entities

标签 symfony doctrine mappedsuperclass

我有一个“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?

谢谢你们 :)

优惠等级:

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

私有(private)优惠类:
<?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;
    }
}

公共(public)优惠类:
<?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 中的已知行为(不是说:错误):在您的场景中,所有实体属性都必须是私有(private)的。只能通过 getter 访问它们。

关于Symfony2 MappedSuperClass 和 Doctrine :generate:entities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25749418/

相关文章:

php - 如何在 Symfony 中创建多个 ChoiceType - 行

php - 如何在 symfony2 功能测试中测试表单事件和事件监听器?

mysql - 具有 Doctrine 的symfony2无法连接到远程mysql数据库

mysql - 禁用Doctrine 1.2中的自动Id字段生成

php - Doctrine 2 WHERE IN 子句使用实体集合

symfony - APC 不保存 fosuserbundle 扩展类中的属性

子类的 Java 构造函数

java - JPA - 是否可以将结果作为 @MappedSuperclass 的实例获得?

php - Symfony 运行提示 kernel.secret 参数未找到

java - 应用泛型类@MappedSuperclass作为targetEntity.Error : @ManyToOne on models. Unit.parent引用未知实体: models. GenericHierarchic