2011-11-09 6 views
1

부모 (PK)를 삭제할 때 작성해야 할 필요없이 모든 종속 자식 (모든 FK)을 NULL로 설정하도록 전파하는 방법이 있는지 묻습니다. 그러한 코드를 수동으로 작성하십시오.
Doctrine이 직접 처리 할 수 ​​있습니까 ..?
예 :symfony/doctrine에서 외래 키 삭제

/** 
* @ORM\OneToMany(targetEntity="Frame", mappedBy="notice") 
* 
*/ 
protected $frames; 

-*AND*- 

/** 
* @ORM\ManyToOne(targetEntity="Notice", inversedBy="frames") 
* @ORM\JoinColumn(name="notice_id", referencedColumnName="id", nullable=true) 
* 
*/ 
protected $notice; 

나는 모든 프레임 외래 키 등이 특정 통지를는, 통지 열 설정, 또는 NULL로 설정하지를 갖고 싶어하는 통지을 삭제합니다.

방법이 있습니까? ??
그렇지 않은 경우이 문제를 해결하기위한 최선의 방법은 무엇입니까 ??

답변

1

나는 당신이 this § of the documentation, about cascades을 찾고 있다고 생각합니다.

+0

하이 그레 구 아르있을 것이다, 즉 빨리 ...
내가 캐스케이드 = "지속"과 지속 = 없음 작업을 "제거"...
가 나는 시도 뭔가 잘못하고 있니? – xeon

+0

당신이 찾고있는 것이 '분리'라고 생각합니다. 관계의 좋은 측면에서 사용해야합니다. – greg0ire

+0

나는 어느 쪽의 학급 (운 없음)에도 그것을 사용하려고 노력했다. ORM \ ManyToOne (targetEntity = "공지", inversedBy = "프레임", 계단식 = { "분리"}) ORM \ JoinColumn (name = "notice_id", referencedColumnName = "id", nullable = true) 다른 클래스에 : 'ORM \ OneToMany (targetEntity = "프레임", mappedBy = "공지", 캐스케이드 = { "분리"})' – xeon

0

schema.yml 파일 onDelete: CASCADE의 상위 클래스에 추가하려고 시도하고이 파일에서 데이터베이스를 다시 생성하십시오. 그런 다음 ORM 그 행동

행운

+0

안녕하세요 Andreu, 자식 클래스에 추가하려고했는데 작동하지 않았다. 부모 삭제할 때뿐만 아니라 chidren 삭제하려고했습니다. _code_ : ORM \ JoinColumn (name = "notice_id", referencedColumnName = "id", nullable = true, onDelete = "CASCADE") '' 또 다른 참고 사항 : 나는 단지 PHP 주석이 있습니다. 그래서 yml 대신에 그것을 쓰는 방법 ?? – xeon

+0

그래서 테이블을 어디에 정의합니까? 그들에게 제발 그들을 정의하는 코드를 줄 수 있습니까? –

+0

[http://pastebin.com/ A6CR2 fSs] notice.php – xeon