我希望有人可以帮忙解决这个问题。请
我有两个一对一关系的表:A和B.我试图在教义模型中建议使用删除级联。
基本上在我的控制器id中执行此操作:
$q = Doctrine_Query::create()
->delete('Tcc_Model_A i')
->whereIn('i.A_ID', $input->ids);
$result = $q->execute();
我的模特我有这个:
$this->hasMany('Tcc_Model_B', array(
'local' => 'A_ID',
'foreign' => 'B_ID',
'cascade' => 'delete'
)
);
即使正确删除了Tcc_Model_A中的主键,外键(B_ID)也不会。有人知道我做错了什么吗?提前感谢您提供任何帮助。 F。
答案 0 :(得分:2)
不要尝试在应用程序代码中强制执行级联操作。应用程序代码无法以原子方式执行这些操作。
通过在数据库中声明FOREIGN KEY...ON DELETE CASCADE
约束来实现级联操作。它们必须由RDBMS处理。
重新评论:
外键可以为级联更新和删除提供支持,并且它们以原子方式运行,因此对父表和从属表的更改一起发生。
ALTER TABLE Tcc_Model_B ADD FOREIGN KEY (B_ID)
REFERENCES Tcc_Model_A(A_ID)
ON DELETE CASCADE;
请参阅http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html
答案 1 :(得分:0)
如果使用Doctrine 2,则通过使用 onDelete =“cascade”选项配置 @JoinColumn ,支持 ON DELETE CASCADE