试图在删除级联和softDeletes中使用外键,但运气不佳。
我有2个表:Users,Events。两个表都有softDeletes。
用户可以有0..n个事件。
事件具有一个user_id,用作用户的外键,如下所示:
$table->foreign('user_id')->references('id')->on('users')->onDelete('CASCADE')->onUpdate('CASCADE');
问题是,当我删除用户时,它会被软删除,但其事件不会被删除-软删除或物理删除。
我是在做错什么,还是这是正确的口才?
其次,如果这是正确的行为,如何最好地实现删除级联?也许像这样在我的模型中覆盖delete()方法...
public function delete()
{
//delete all events...
__parent::delete()
}
?
数据库的外键不会执行任何操作,因为您尚未更改相关的主键。仅当您更新或删除主键时,相关行才会被修改。
从关于该主题的所有信息中,解决方案是使用Eloquent的Model Events侦听delete事件,并更新相关表。
或者,您可以“扩展”delete()
方法并直接包含功能。这是一个例子。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句