Doctrine级联删除查询?

时间:2012-10-16 09:31:23

标签: mysql zend-framework orm doctrine doctrine-orm

我正在使用以下查询来删除我的数据库中的国家/地区但由于国家/地区与城市之间存在一对多的关系,因此会出现外键错误。

我正在使用以下查询:

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

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

我还在国家/地区模型中进行了以下设置:

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

请建议。

2 个答案:

答案 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文件中我添加如下: 级联:[删除]

并且有效。