2015-01-21 1 views
0

제약 조건 위반으로 인해 데이터베이스에서 항목을 삭제하려고 할 때 오류가 발생하는 모델이 있습니다.Doctrine, Typo3 흐름 : 삭제 작업을 수행 할 수 없습니다.

오류 메시지는 다음 실행 동안

예외가 발생 'WHERE ID = pits_docmanager_domain_model_role에서 삭제? 외부 키 제약 조건이 실패했습니다 ('flow_db_pits_doc_manager`.pits_docmanager_domain_model_role_role_accesspoints_join`, 제약 조건'FK_54B164455C544054`) FOREIGN KEY (`docmanager_role`) : 부모 키를 삭제하거나 갱신 할 수 없습니다. 참조`pits_docmanager_domain_model`)

#의 23000 : SQLSTATE [23000] : 무결성 제약 조건 위반 : 1451 삭제하거나 부모 행을 업데이트 할 수 없습니다 : 외래 키 제약 조건이 실패 (`flow_db_pits_doc_manager`.`pits_docmanager_domain_model_role_role_accesspoints_join`, CONSTRAINT`FK_54B164455C544054` FOREIGN KEY (`docmanager_role`) 참조 pits_docmanager_domain_model\)

그리고 내 엔티티에 내가 가지고 (role.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; 

다른 파일에 (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; 

난 여전히 부동산 오전에 할 수없는 설정 cascade 옵션이 있어도 그래도 해당 항목을 제거합니다.

편집 : 내가 뭘 달성하려고하는 즉 ..

내가 2 개 모델 (역할과 accesspoints)가 고려하십시오. 내가 역할을 삭제하면 해당 역할과 연결된 테이블에 관련된 데이터를 삭제할 수 있어야합니다 (액세스 포인트에 데이터를 보존하려는 경우)

편집 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; 

답변

0

) 캐스케이드 PARAM에서하고 일이보기 자동 삭제 결과에 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; 
관련 문제