继承:架构未正确更新 - 表

时间:2015-07-09 10:22:55

标签: mysql symfony doctrine-orm symfony-2.7

有三个类:

  • A类是抽象的,MappedSuperClass
  • B类继承自A
  • C类继承自B

PHP-wise这很好用。使用getter生成setterphp app/console doctrine:generate:entities App也可以。

问题

使用php app/console doctrine:schema:update --force创建架构时出现问题。创建了B类和C类的表。可以使用抽象类中的所有列,也可以使用类B和C中的专用字段。

表C中未生成列createdBy它已丢失。它是为表B创建的。问题出在哪里?

摘要A类

/**
 * @ORM\MappedSuperclass
 */
abstract class A {
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

    /**
     * @ORM\Column(type="string")
     */
    protected $name;

    /**
     * @Gedmo\Blameable(on="create")
     * @ORM\ManyToOne(targetEntity="AppBundle[…]")
     * @ORM\JoinColumn(name="created_by", referencedColumnName="id", nullable=false)
     */
    protected $createdBy;
}

B类

/**
 * @ORM\Entity
 * @ORM\Table(name="b")
 * @ORM\HasLifecycleCallbacks()
 */
class B extends A {
    /**
     * @ORM\Column(type="string")
     */
    protected $b;
}

C类

/**
 * @ORM\Entity
 * @ORM\Table(name="c")
 * @ORM\HasLifecycleCallbacks()
 */
class C extends B {
    /**
     * @ORM\Column(type="string")
     */
    protected $c;
}

注意:我使用以下方式清除了行李:

app/console cache:clear
app/console doctrine:cache:clear-metadata 
app/console doctrine:cache:clear-query  
app/console doctrine:cache:clear-result 

0 个答案:

没有答案