[英]Doctrine cascade delete query?
I am using following query to delete countries in my database but it is giving foreign key error because countries has one to many relationship with cities. 我正在使用以下查询来删除数据库中的国家/地区,但由于国家与城市之间存在一对多的关系,因此出现了外键错误。
I am using following query : 我正在使用以下查询:
$cd = 1;
Doctrine_Core::getTable('country')->find($cd)->delete();
this query soft deletes if countries doesn't have any child but gives error if countries have any city. 如果国家/地区没有子代,此查询会软删除,但如果国家/地区具有任何城市,则会给出错误信息。
I have also done following settings in country model: 我还完成了国家模型中的以下设置:
$this->hasMany('city', array(
'local' => 'id',
'foreign' => 'country_id',
'cascade' => 'delete'
));
Please suggest. 请提出建议。
In BaseCity.php you should have a relation to Country. 在BaseCity.php中,您应该与Country相关。 In:
在:
$this->hasOne('Country', array(
...
add this line: 添加此行:
"onDelete"=>"CASCADE"
When you delete country, cities will be deleted too. 删除国家/地区时,城市也会被删除。 If you want to keep them, put
如果要保留它们,放
"onDelete"=>"SET NULL"
I think above way is also correct but I solved it in following way. 我认为上述方法也是正确的,但我按以下方式解决了。
I made relation of country to city like this : 我这样将国家与城市联系起来:
$this->hasMany('city', array(
'local' => 'id',
'foreign' => 'country_id',
'cascade' => array(
0 => 'delete',
)));
In YAML file I added like this : cascade: [delete] 在YAML文件中,我像这样添加了:级联:[删除]
and it worked. 而且有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.