【发布时间】:2015-08-11 06:52:42
【问题描述】:
我有一个名为Child 的表,它有一个来自Parent 表的外键。现在,我需要完全删除一个父行及其子行。我在redbeanphp中使用了这段代码:
R::trash(parent);
但由于子表中的引用,它会引发约束异常。
我怎样才能一步删除 bean 及其子项?
【问题讨论】:
-
在
child表中使用on delete casecade选项
我有一个名为Child 的表,它有一个来自Parent 表的外键。现在,我需要完全删除一个父行及其子行。我在redbeanphp中使用了这段代码:
R::trash(parent);
但由于子表中的引用,它会引发约束异常。
我怎样才能一步删除 bean 及其子项?
【问题讨论】:
child 表中使用on delete casecade 选项
如果您希望这种行为是开箱即用的,您可以定义外键来执行此操作。在 MySQL 中,这将在定义外键时使用 ON DELETE CASCADE 完成。 Here's the documentation.
如果您希望在 PHP 端完成,则必须手动完成;
R::exec('DELETE FROM child_table WHERE parent_id = :pid', array('pid' => $parent->id));
(可能有一种更“bean”的方式来做到这一点,不过我还没有真正进入它)
【讨论】: