保留用户对评论的评论删除 Laravel

nsc*_*ode 0 laravel

我想为我的文章创建评论部分。我的逻辑是,文章有很多评论,用户(文章的读者)有很多评论。所以我做了一个有2个外键的表。

如果文章被删除->级联并删除评论。

如果用户被删除,我该如何保留对文章的评论?这是代码:

        Schema::create('comments', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->text('body');
        $table->unsignedBigInteger('article_id');
        $table->unsignedBigInteger('user_id');
        $table->timestamps();

        $table->foreign('article_id')->references('id')->on('articles')->onDelete('cascade');
        $table->foreign('user_id')->references('id')->on('users')->onDelete('**what do I write here?**');
    });
Run Code Online (Sandbox Code Playgroud)

Rob*_*awa 5

您必须将“user_id”列设置为可为空,以便当您从数据库中删除用户时可以将其设置为空。

$table->unsignedBigInteger('user_id')->nullable();
$table->foreign('user_id')->references('id')->on('users')->onDelete('set null');
Run Code Online (Sandbox Code Playgroud)

然后在你的前端你可以这样做:

$comment->user()->exists() ? $comment->user->username : 'Unknown User';
Run Code Online (Sandbox Code Playgroud)