2012-10-16 109 views
1

我正在使用以下查詢刪除數據庫中的國家,但由於國家與城市之間存在一對多關係,因此導致外鍵錯誤。學說級聯刪除查詢?

我使用下面的查詢:

$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中,您應該有一個與國家的關係。在:

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

加入這一行:

"onDelete"=>"CASCADE" 

當你刪除的國家,城市也將被刪除。如果你想保留它們,把

"onDelete"=>"SET NULL" 
+0

感謝您的善意幫助。 –

+0

@Zelijko:我按照你的建議使用「onDelete」=>「SET NULL」。我的兩個模型都有SOFTDELETE行爲。它設置父刪除= 1,但不設置子行= 1(附加到父級) –