使用ON DELETE CASCADE在Symfony 2和Doctrine 2中创建模式

时间:2012-08-21 09:56:11

标签: php symfony doctrine doctrine-orm

我在User表和Role表之间有一些交叉表。我想在数据库级别创建级联删除。我有下一个注释:

/**
 * @ORM\ManyToMany(targetEntity="Role")
 * @ORM\JoinTable(name="user_x_role",
 *     joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
 *     inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id")}
 * )
 * @var ArrayCollection $roles
 */
protected $roles;

但是外键在ondelete = restrict和onupdate = restrict之后:

doctrine:schema:update --force

如何将这些值更改为CASCADE?

1 个答案:

答案 0 :(得分:1)

您应该尝试这一点,不要忘记修改ORM级别的级联。

/**
 * @ORM\ManyToMany(targetEntity="Role", cascade={"persist","remove"})
 * @ORM\JoinTable(name="user_x_role",
 *     joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")},
 *     inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id", onDelete="CASCADE")},
 * )
 * @var ArrayCollection $roles
 */
protected $roles;