我如何让我的 cascadeOnDelete 在 laravel 中工作

How do i get my cascadeOnDelete to work in laravel

尝试学习 Laravel,我正在从头开始学习 laracast 中名为 Laravel 8 的教程,现在已经到了关于级联的章节 https://laracasts.com/series/laravel-8-from-scratch/episodes/53

我没有收到任何错误,但如果我向 post 添加评论,然后删除 post,那么我的评论会保留在数据库中,而他的评论会随着 post。我尝试使用 laravel 删除 post,但也使用 tableplus。 我的设置与他的有点不同,所以我想知道我的级联是否因为我的设置中的某些原因而无法正常工作。

评论迁移

Schema::create('comments', function (Blueprint $table) {
        $table->id();
        $table->foreignId('post_id')->constrained()->cascadeOnDelete();
        $table->foreignId('user_id')->constrained()->cascadeOnDelete();
        $table->text('body');
        $table->timestamps();
    });

Post 迁移

Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->foreignId('user_id');
        $table->foreignId('category_id');
        $table->string('slug')->unique();
        $table->string('title');
        $table->text('excerpt');
        $table->text('body');
        $table->timestamps();
        $table->timestamp('published_at')->nullable();
    });

我也试过使用 $table->foreignKey('post_id')->references('id')->on('posts')->onDelete('cascade) 但我似乎无法让它工作。

我还尝试使用

在 mySql 数据库中添加自我约束
alter table
   `comments`
add
   constraint `comments_post_id_foreign` foreign key (`post_id`) references `posts` (`id`) on 
delete cascade

我需要特定用途吗,还是我的设置? php/database setup versions from wamp

我想如果你搜索myisam和innodb,你可能会找到答案。 在myisam中,外键没有被删除