2012-10-16 3 views
1

데이터베이스에있는 국가를 삭제하는 데 다음 쿼리를 사용하고 있지만 도시에 일대일 관계가 많기 때문에 외래 키 오류가 발생합니다.Doctrine Cascade Delete Query?

나는 다음과 같은 쿼리를 사용하고 있습니다 :

$cd = 1; 
Doctrine_Core::getTable('country')->find($cd)->delete(); 

이 쿼리 소프트 삭제를 국가에 자식이 있지만 국가가 어떤 도시가있는 경우 오류를 제공하지 않는 경우.

는 또한 국가 모델의 설정은 다음했을 :

$this->hasMany('city', array(
'local' => 'id', 
'foreign' => 'country_id', 
'cascade' => 'delete' 
)); 

제안하십시오.

답변

0

위의 방법으로 생각해도 정확하지만 다음과 같은 방법으로 해결했습니다. 나는이 같은 추가

$this->hasMany('city', array(
    'local' => 'id', 
    'foreign' => 'country_id', 
    'cascade' => array(
    0 => 'delete', 
    ))); 

YAML 파일에서 : 폭포 :

는이 같은 도시 국가의 관계를 만들어

[삭제]를하고는했다.

0

BaseCity.php에서 국가와의 관계가 있어야합니다. 에서 :

"onDelete"=>"CASCADE" 

당신이 국가를 삭제

이 도시도 삭제됩니다 :

$this->hasOne('Country', array(
... 

이 줄을 추가합니다. 그들을 지키고 싶다면,

"onDelete"=>"SET NULL" 
+0

친절한 도움에 감사드립니다. –

+0

@Zelijko : "onDelete"=> "SET NULL"을 사용하고 있습니다. 내 두 모델 모두 SOFTDELETE 동작을 사용합니다. 부모 삭제 = 1로 설정했지만 자식 행을 설정하지 않음 = 1 (상위에 첨부 됨) –

관련 문제