onDelete('cascade')是什么意思?

2022-08-30 11:46:24
Schema::table('posts', function (Blueprint $table) {
    $table->integer('user_id')->unsigned();
    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});

这是否意味着如果我删除了一个帖子,用户也将被删除,或者这是否意味着如果我删除了一个用户,他们所有的帖子都将被删除?


答案 1

简短的回答是:在你的情况下,如果你删除了一个,所有与他有关的帖子也将被删除。user

onDelete('cascade');只需向数据库添加规则,该规则指定在删除父数据时删除子数据。ON DELETE CASCADE

注意:注意错别字(双分号)

$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');


答案 2

您正在谈论的代码创建一个外键/对另一个表上的列的引用。这意味着当删除行时,它也将删除所有引用和附加数据。onDelete('cascade')

例如,如果您有一个用户,并且您在用户上设置了onDelete('cascade'),那么当用户删除其帐户时,所有帖子也将被删除。

您可以在Laravel优秀文档上找到更多信息。


推荐