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

时间:2017-03-29 13:11:35

标签: php laravel

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

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

4 个答案:

答案 0 :(得分:29)

简短回答是:在您的情况下,如果您删除了user,则与其相关的所有帖子也将被删除。

onDelete('cascade');只是将ON DELETE CASCADE规则添加到您的数据库中,该规则指定在删除父数据时删除子数据。

注意:处理拼写错误(双分号)

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

答案 1 :(得分:8)

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

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

您可以在Laravel excellent documentation找到更多信息。

答案 2 :(得分:4)

这意味着如果您删除链接的“用户”,则与该用户相关联的“帖子”也会自动删除。

答案 3 :(得分:3)

如果您使用的是mysql,请查看documentation

在您的情况下,这意味着:如果用户被删除,帖子也将被删除。