如何在Doctrine中创建没有关系的外键约束

时间:2016-01-26 21:40:05

标签: doctrine-orm

我有以下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关系来修复异常,但正如我所说,我不相信它应该存在。

有没有其他方法可以创建级联外键关系?

1 个答案:

答案 0 :(得分:1)

您可以在定义blocked_usersblocked_user_id之间的关系时在user表格上设置外键:

@JoinColumn(name="blocked_user_id", referencedColumnName="id", onDelete="cascade")

onDelete选项会按预期级联删除。