首页 > 解决方案 > 使用 laravel 迁移添加“更新时”和“删除时”外键约束

问题描述

我正在把我的桌子变成这样......

    Schema::create('matched_merchants', function (Blueprint $table)
    {
        $table->increments('id')->unsigned();
        $table->integer('merchant_id')->unsigned();
        $table->integer('offer_id')->unsigned();
        $table->foreign('merchant_id')->references('id')->on('merchants')->onUpdate('cascade')->onDelete('restrict');
        $table->foreign('offer_id')->references('id')->on('offers')->onUpdate('cascade')->onDelete('restrict');
    });

我添加 2 个外键都有 onUpdate 和 onDelete 约束,但只添加了更新约束。

如果我删除 onUpdate,它将正确添加 onDelete 约束。

我无法单独添加它们,因为我收到重复键的错误。

我可以使用原始 sql 语句手动添加它们,但如果有正确的方法来做它,我宁愿这样做。

标签: phpmysqllaravel

解决方案


出于某种原因,如果将列设置为nullable(),Laravel 会正确设置外键。

也就是说,我可以看到导致其他问题,所以我建议执行原始 SQL 语句。


推荐阅读