1

次のクエリを使用してデータベース内の国を削除していますが、国は都市と 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

上記の方法も正しいと思いますが、次のように解決しました。

私はこのように国と都市の関係を作りました:

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

YAMLファイルに次のように追加しました:cascade:[削除]

そしてそれはうまくいった。

于 2012-10-18T11:54:27.020 に答える
0

BaseCity.php では、Country との関係が必要です。の:

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

次の行を追加します。

"onDelete"=>"CASCADE"

国を削除すると、都市も削除されます。それらを保持したい場合は、入れてください

"onDelete"=>"SET NULL"
于 2012-10-16T23:07:48.007 に答える