2014-10-16 157 views
1

我正在寻找销毁雄辩集合的策略,例如模型“包含”其他模型。Laravel:删除雄辩集合

在Ruby on Rails的ActiveRecord中,有一个dependent: :destroy选项,可以在定义关系时放置,也就是说,例如,一个order被删除,然后order_lines也必须去。

Laravel中有类似的东西吗?或者除了手动清理并将其包装在交易中之外,还有其他替代方案?

+0

你有没有想过为DB中的相关表正确设置ondelete? – 2014-10-16 19:44:25

+0

ondelete?你在谈论数据库触发器吗?我不想把这种逻辑放入数据库中。 – 2014-10-16 19:49:02

+0

[自动删除Laravel中的相关行(Eloquent ORM)]的可能的重复(http://stackoverflow.com/questions/14174070/automatically-deleting-related-rows-in-laravel-eloquent-orm) – 2014-10-16 21:01:19

回答

0

如果使用Laravel架构构建,你应该使用外键和外键添加例如:

$table->foreign('entry_id') 
    ->references('id') 
    ->on('entries') 
    ->onDelete('CASCADE'); 

当然你也可以做,例如phpMyAdmin的相同。

当使用这样的结构,如果从entries这种情况下,记录将被删除,自动从该表中有entry_id一样identries正被删除将被删除的记录。

它不是一个触发器,因为触发器的结构要复杂得多,它只是定义关系并告诉如果相关的父记录将被删除,该怎么做。

+0

尽可能多是一种做法,它不是解决方案。我正在寻找让Laravel/Eloquent工作的方法。不是我的SQL数据库。 – 2014-10-16 20:38:47

+0

@NielsB也许你想看看http://stackoverflow.com/questions/14174070/automatically-deleting-related-rows-in-laravel-eloquent-orm然后,但使用'onDelete'是我认为没有编码的最佳选择 – 2014-10-16 20:54:43

+0

我同意,但我更喜欢编码。感谢您提供其他问题的链接。我正在投票结束这个重复。 – 2014-10-16 21:02:10