2

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

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

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

当我删除 TableA 元素时,TableB 中的相应元素也会自行删除。但这并不适用于其他方式。

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


@Pabloks:我理解,它将以我提出的简化案例进行。但实际上,至少还有第三张桌子。事实上,第一个表和其他两个表之间存在继承的概念。

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 }
4

1 回答 1

0

在 TableA 中你做得很好,但在 TableB 中你错误地定义了关系。

代码必须是这样的:

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'字段。

希望它清楚。

编辑:认为您的编辑是错误的,但稍后检查是正确的。我的赌注。

于 2011-02-23T14:09:16.717 回答