首页 > 解决方案 > 迁移 Laravel 无法同时创建主键和外键

问题描述

我试图在一次迁移中在主键中创建一个外键。

这适用于 Laravel 5.7。我尝试了不同的方法来尝试实现我的目标。这是我的最终代码。

    Schema::create('teachers', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        $table->integer('user_id')->unsigned()->primary();
        $table->timestamps();
    });

    Schema::table('teachers', function($table) {
        $table->foreign('user_id')
            ->references('id')
            ->on('users')
            ->onDelete('cascade');
    });

它使用“user_id”作为主键创建一个普通表,但它不是外键。

标签: phplaravellaravel-5.7

解决方案


试试这个代码

Schema::create('teachers', function (Blueprint $table) {
        $table->engine = 'InnoDB';
        $table->increments('id');
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->timestamps();
    });

推荐阅读