Doctrine在添加onDelete =" CASCADE"之后无需更新。

时间:2018-03-15 14:46:43

标签: doctrine-orm

我想通过onDelete="CASCADE"注释在我的某个属性上添加选项@JoinColumn

/**
 * @ORM\OneToMany(targetEntity="AppBundle\Entity\Product",mappedBy="category",fetch="EAGER")
 * @ORM\JoinColumn(onDelete="CASCADE")
 */
private $products;

但是当我尝试使用php bin/console doctrine:schema:update --force进行更新时,我总是得到:

  

没有任何内容 - 数据库已经同步。

我尝试添加其他一些属性,但我遇到了同样的问题。但是,如果我故意添加错误,我会收到预期的错误。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

Product注释是您在多对一关联的反面使用的注释。存储关联这一侧的实体的表不包含指向存储@JoinColumn实体的表的任何外键,因此没有"连接列"那里。

The documentation声明了以下Product

  

此注释用于@ManyToOne,@ OneToOne字段和嵌套在@ManyToMany内的@JoinTable上下文中的关系上下文。

在您的情况下,注释根本不适用于任何列,因此您的数据库不需要更新。

如果您希望通过数据库的级联操作删除与给定Category相关的@JoinColumn(onDelete="CASCADE")个实体,则必须在关联的拥有方添加@ManyToOne,然后到category的{​​{1}}属性的Product注释。