简体   繁体   English

学说级联删除查询?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM