2011-02-23 7 views
2

나는 일대일 표가 있습니다. 내 설정/교리/schema.yml 파일에서 내 두 테이블은 각각이 : 나는 TableA의 요소를 삭제하면 TableB의의 해당 요소도 자체를 삭제Symfony에서 일대일 상호 삭제를 수행하는 방법은 무엇입니까?

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

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

등. 그러나 이것은 다른 방법으로는 작동하지 않습니다.

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 } 
+0

Doctrine 1은 사용하지 않지만, 일대일 관계의 측면이 '소유 측면'(외래 키를 포함하는 쪽)이기 때문에 Doctrine은 어떤 엔터티가 캐스케이드 연산을위한 소유 측. 이 경우에 "양방향"이 될 수없는 이유입니다. –

+0

동일한 관계를 두 번 정의한 경우 [문서의이 페이지] (http://www.doctrine-project.org/documentation/manual/1_1/hu/defining-models:relationships:foreign-key-associations : 일대일) 특히 schema.yml 파일 아래의 §. 나는 당신이 당신의 정의로 이상한 것을 기대할지도 모른다고 생각합니다. – greg0ire

+0

답장을 보내 주셔서 감사합니다. 그래서 유일한 해결책은 테이블의 모델에서이 동작을 코딩하는 것입니다 ... 최선의 접근 방식에 대한 아이디어가 있습니까? (심포니에서 시작했습니다.) – Javanight

답변

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 } 
매개 '로컬'은 다른 모델에 관련되는 전류 모델되는 필드 설명

가 '외부'는 설명 다른 모델되는 분야 '로컬'입력란에 연결되어 있습니다.

희망 사항.

편집 : 편집 중이라고 잘못 생각했으나 나중에 옳았습니다. 내 신비.

관련 문제