我有一个模型,当我尝试从数据库中删除条目时(由于违反约束),它会给我一个错误。
错误消息是:
使用参数 [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;