我想在两个或多个表之间定义外键

时间:2017-10-31 23:15:01

标签: php laravel foreign-keys

我尝试了很多东西,但它没有用。让我用我所做的:

enter image description here

这张桌子: enter image description here

我收到此错误:

  

SQLSTATE [HY000]:常规错误:1005无法创建表cmpe#sql-2068_94(错误:150"外键约束我   错误形成")

你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

所有外国字段都需要是int而不是字符串。也让他们没有签名。这是创建外键的正确格式。

一个例子:

$table->integer('myForeignID')->unsigned();

这条线可以删除,因为它很可能不需要:

$table->foreign('year')->references('id')->on('course');
$table->foreign('semester')->references('id')->on('course');

在桌面帖子之前渲染表课程和教师。

答案 1 :(得分:0)

public function up()
{
    Schema::create('posts', function (Blueprint $table) {

        $table->engine = 'InnoDB';
        $table->increments('id');
        $table->integer('instructors_id')->unsigned()->nullable();
        $table->integer('course_id')->unsigned()->nullable();
        $table->integer('year')->unsigned()->nullable();
        $table->integer('semester')->unsigned()->nullable();
        $table->string('body');
        $table->integer('post_id');
        $table->rememberToken();
        $table->timestamps();

        $table->foreign('instructors_id')->references('id')->on('instructors');
        $table->foreign('course_id')->references('id')->on('course');
        $table->foreign('year')->references('id')->on('course');
        $table->foreign('semester')->references('id')->on('course');

    });
}


public function up()
{
     Schema::create('course', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->integer('semester');
        $table->integer('year');
    });
}