0

ユーザーテーブルとロールテーブルの間にクロステーブルがあります。データベースレベルでカスケード削除を作成したいと思います。次の注釈があります:

/**
 * @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に変更するにはどうすればよいですか?

4

1 に答える 1

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;
于 2012-08-21T10:03:33.107 に答える