找不到外键约束索引

时间:2018-11-15 09:47:48

标签: laravel postgresql migration

我的run_tasks表具有外键completer_guest_id,我需要参考其他表的列。

Schema::table('run_tasks', function (Blueprint $t) {
            $t->integer('completer_id')->nullable();
            $t->foreign('completer_id')->references('id')->on('users');
            $t->integer('completer_guest_id')->nullable();
            $t->foreign('completer_guest_id')->references('id')->on('tasks_guests');
        });

但是我找不到索引:run_tasks_completer_guest_id_foreign 因此,在此迁移中,我无法删除外键约束并删除该列:

Schema::table('run_tasks', function (Blueprint $table){
            $table->dropForeign('run_tasks_completer_guest_id_foreign');
            $table->dropColumn('completer_guest_id');
            $table->integer('completer_guest_id')->nullable();
            $table->foreign('completer_guest_id')
                ->references('id')
                ->on('guests')
                ->onDelete('cascade');
        });

我得到这个error,当我运行\d run_tasks时,我看到this 有没有解决此问题的方法?

1 个答案:

答案 0 :(得分:1)

删除表格,尝试将创建和外键分配分开

    Schema::dropIfExists('run_tasks');
    Schema::create('run_tasks', function (Blueprint $table) {
        $table->integer('completer_id')->nullable();
        $table->integer('completer_guest_id')->nullable();
        $table->index(['completer_id', 'completer_guest_id']); 
    });       
    Schema::table('run_tasks', function(Blueprint $table) {           
        $table->foreign('completer_id')->references('id')->on('users')->onDelete('cascade');
        $table->foreign('completer_guest_id')->references('id')->on('guests')->onDelete('cascade');
    });
相关问题