【问题标题】:How do i get my cascadeOnDelete to work in laravel我如何让我的 cascadeOnDelete 在 laravel 中工作
【发布时间】:2021-11-13 12:27:09
【问题描述】:

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

我没有收到任何错误,但如果我在帖子中添加评论,然后删除该帖子,那么我的评论会保留在数据库中,而他的评论会随帖子一起删除。我尝试使用 laravel 删除帖子,但也使用 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();
    });

迁移后

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

【问题讨论】:

    标签: laravel laravel-8 php-7.4


    【解决方案1】:

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

    【讨论】:

    • 谢谢,桌子在 myisam,我查了一下如何让 laravel 改变它,现在它可以工作了。
    猜你喜欢
    • 2021-05-10
    • 2020-02-22
    • 2019-05-06
    • 1970-01-01
    • 2017-11-02
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    相关资源
    最近更新 更多