我有以下2个表格:
+-------+ +------------------------------+
| users | | blocked_users |
+-------+ +------------------------------+
| id | | id, user_id, blocked_user_id |
+-------+ +------------------------------+
我的User
类定义了以下关系:
/**
* Users the instance user has blocked.
*
* @ORM\OneToMany(
* targetEntity="BlockedUser",
* mappedBy="blocker",
* fetch="EXTRA_LAZY",
* cascade={"persist", "remove"},
* orphanRemoval=true
* )
*
* @var BlockedUser[]|Collection
*/
protected $blockedUsers;
我没有定义blockedByUsers
关系,因为用户不应该知道谁阻止了他们。但是,当我删除已被阻止的用户时,我得到一个外键异常。我可以通过添加另一个User::$blockedByUsers
关系来修复异常,但正如我所说,我不相信它应该存在。
有没有其他方法可以创建级联外键关系?
答案 0 :(得分:1)
您可以在定义blocked_users
到blocked_user_id
之间的关系时在user
表格上设置外键:
@JoinColumn(name="blocked_user_id", referencedColumnName="id", onDelete="cascade")
onDelete
选项会按预期级联删除。