原则,Typo3 流程:无法让删除级联工作


Doctrine,Typo3 Flow : unable to get delete cascade to work

我有一个模型,当我尝试从数据库中删除条目时(由于违反约束),它会给我一个错误。

错误消息是:

使用参数 [2] 执行"从 WHERE id = pits_docmanager_domain_model_role 删除"时发生异常: SQLSTATE[23000]:完整性约束冲突:1451 无法删除或更新父行:外键约束失败("flow_db_pits_doc_manager.pits_docmanager_domain_model_role_role_accesspoints_join",约束"FK_54B164455C544054"外键("docmanager_role")引用"pits_docmanager_domain_model")

#23000: SQLSTATE[23000]:完整性约束冲突:1451 无法删除或更新父行:外键约束失败("flow_db_pits_doc_manager.pits_docmanager_domain_model_role_role_accesspoints_join",约束"FK_54B164455C544054"外键("docmanager_role")引用pits_docmanager_domain_model'

在我的实体中,我有(角色.php)

/**
 * @var 'Doctrine'Common'Collections'Collection<'Pits'DocManager'Domain'Model'AccessPoint> $role_accessPoints
 * @ORM'ManyToMany(targetEntity="'Pits'DocManager'Domain'Model'AccessPoint",cascade={"remove"})
 * @ORM'JoinTable(name="role_accesspoints",
 * joinColumns={@ORM'JoinColumn(name="access_point_id",referencedColumnName="id")},
 * inverseJoinColumns={@ORM'JoinColumn(name="role_id",referencedColumnName="id")})
 */
protected $role_accessPoints;

和另一个文件(接入点.php)

/**
 * @var 'Doctrine'Common'Collections'Collection<'Pits'DocManager'Domain'Model'Role> $accessPoint_roles
 * @ORM'ManyToMany(targetEntity="'Pits'DocManager'Domain'Model'Role",cascade={"all"})
 */
protected $accessPoint_roles;

即使我在属性中设置了级联选项,我仍然无法删除该条目。

编辑:我想要实现的是..

假设我有 2 个模型(角色和接入点)。 如果我删除一个角色,我需要能够删除该角色以及与连接表中的角色相关的相应数据(并希望保持接入点中的数据不变)

编辑2:已修复(从级联参数中删除了所有选项,它起作用了)

/**
 * @var 'Doctrine'Common'Collections'Collection<'Pits'DocManager'Domain'Model'AccessPoint> $role_accessPoints
 * @ORM'ManyToMany(targetEntity="'Pits'DocManager'Domain'Model'AccessPoint",cascade={})
 * @ORM'JoinTable(name="role_accesspoints",
 * joinColumns={@ORM'JoinColumn(name="access_point_id",referencedColumnName="id")},
 * inverseJoinColumns={@ORM'JoinColumn(name="role_id",referencedColumnName="id")})
 */
protected $role_accessPoints;

试试这个,它将在删除结果时自动从 mm 表中删除 enries

/**
 * Result organisation reletion(in Result model)
 *
 * @var 'Doctrine'Common'Collections'Collection<'WIND'Alertregistration'Domain'Model'Organization>
 * @ORM'ManyToMany(cascade={})
 * @ORM'Column(nullable=true)
 * @ORM'JoinTable(joinColumns={@ORM'JoinColumn(onDelete="cascade")})
 */
protected $resultOrgRelation;