我正在使用以下查询来删除我的数据库中的国家/地区但由于国家/地区与城市之间存在一对多的关系,因此会出现外键错误。
我正在使用以下查询:
$cd = 1;
Doctrine_Core::getTable('country')->find($cd)->delete();
如果国家/地区没有任何子项,则此查询软件会删除,但如果国家/地区有任何城市,则会出错。
我还在国家/地区模型中进行了以下设置:
$this->hasMany('city', array(
'local' => 'id',
'foreign' => 'country_id',
'cascade' => 'delete'
));
请建议。
答案 0 :(得分:0)
在BaseCity.php中,您应该与Country有关系。在:
$this->hasOne('Country', array(
...
添加以下行:
"onDelete"=>"CASCADE"
删除国家/地区时,也会删除城市。如果你想保留它们,请输入
"onDelete"=>"SET NULL"
答案 1 :(得分:0)
我认为以上方式也是正确的,但我按照以下方式解决了这个问题。
我这样建立了国家与城市的关系:
$this->hasMany('city', array(
'local' => 'id',
'foreign' => 'country_id',
'cascade' => array(
0 => 'delete',
)));
在YAML文件中我添加如下: 级联:[删除]
并且有效。