Inheritance 如何在Symfony中进行一对一的相互删除?

Inheritance 如何在Symfony中进行一对一的相互删除?,inheritance,symfony1,doctrine,one-to-one,Inheritance,Symfony1,Doctrine,One To One,我有一对一的桌子。在我的config/doctor/schema.yml中,我的两个表分别有: TableA: #... relations: TableB: { onDelete: CASCADE, local: id, foreign: table_a_id } et 当我删除TableA元素时,TableB中相应的元素也会删除自身。但事实并非如此 如何在Symfony中进行一对一的相互删除 @帕布洛克斯:我理解,我将在我介绍的简化案例中说明。但实际上,至少还有第三张桌子。

我有一对一的桌子。在我的config/doctor/schema.yml中,我的两个表分别有:

TableA:
  #...
  relations:
    TableB: { onDelete: CASCADE, local: id, foreign: table_a_id }
et

当我删除TableA元素时,TableB中相应的元素也会删除自身。但事实并非如此

如何在Symfony中进行一对一的相互删除

@帕布洛克斯:我理解,我将在我介绍的简化案例中说明。但实际上,至少还有第三张桌子。事实上,在第一个表和其他两个表之间有一个继承的概念

TableA:
  #...
  relations:
    TableB: { onDelete: CASCADE, local: id, foreign: table_a_id }
    TableC: { onDelete: CASCADE, local: id, foreign: table_a_id }

TableB:
  #...
  relations:
    TableA: { onDelete: CASCADE, local: table_a_id, foreign: id }

TableC:
  #...
  relations:
    TableA: { onDelete: CASCADE, local: table_a_id, foreign: id }

在表A中,您做得很好,但在表B中,您定义的关系不正确

代码必须类似于:

TableA:
  #...
  relations:
    TableB: { onDelete CASCADE, local: id, foreign: table_a_id }

et

TableB:
  #...
  relations:
    TableA: { onDelete CASCADE, local: id, foreign: table_b_id }
参数“local”描述当前模型的哪个字段与另一个模型相关,“foreign”描述另一个模型的哪个字段链接到“local”字段

希望它是清楚的


编辑:认为你的编辑是错误的,但稍后检查是正确的。我的mystake。

在表A中,您做得很好,但在表B中,您对关系的定义不正确

代码必须类似于:

TableA:
  #...
  relations:
    TableB: { onDelete CASCADE, local: id, foreign: table_a_id }

et

TableB:
  #...
  relations:
    TableA: { onDelete CASCADE, local: id, foreign: table_b_id }
参数“local”描述当前模型的哪个字段与另一个模型相关,“foreign”描述另一个模型的哪个字段链接到“local”字段

希望它是清楚的


编辑:认为你的编辑是错误的,但稍后检查是正确的。My mystake。

我不使用原则1,但我认为这是因为一对一关系的一方是“拥有方”,即包含外键的一方,原则需要知道哪个实体作为拥有方工作,以便级联操作。这就是为什么在这种情况下它不能是双向的。您定义了两次相同的关系,请特别阅读schema.yml文件下的§。我想你可能会对你的定义有一些奇怪的想法。谢谢你快速的回答,因为你的回答很清楚。所以我想唯一的解决办法是在表的模型中为自己编写这种行为。。。你知道最好的方法吗?我从symfonyI开始编辑我对你问题的回答。我不使用原则1,但我认为这是因为你一对一关系的一方是“拥有方”,即包含外键的一方,原则需要知道哪个实体作为拥有方工作,以便级联操作。这就是为什么在这种情况下它不能是双向的。您定义了两次相同的关系,请特别阅读schema.yml文件下的§。我想你可能会对你的定义有一些奇怪的想法。谢谢你快速的回答,因为你的回答很清楚。所以我想唯一的解决办法是在表的模型中为自己编写这种行为。。。你知道最好的方法吗?我从symfonyI开始编辑我对你问题的回答。