1

我正在使用以下查询来删除我的数据库中的国家,但它给出了外键错误,因为国家与城市具有一对多的关系。

我正在使用以下查询:

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

如果国家/地区没有任何孩子,则此查询软删除,但如果国家/地区有任何城市,则会出错。

我还在国家模式中做了以下设置:

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

请建议。

4

2 回答 2

0

在 BaseCity.php 中,您应该与 Country 有关系。在:

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

添加这一行:

"onDelete"=>"CASCADE"

当您删除国家/地区时,城市也将被删除。如果你想保留它们,把

"onDelete"=>"SET NULL"
于 2012-10-16T23:07:48.007 回答
0

我认为上述方法也是正确的,但我通过以下方式解决了它。

我像这样建立国家与城市的关系:

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

在 YAML 文件中,我添加如下: cascade: [delete]

它奏效了。

于 2012-10-18T11:54:27.020 回答