Php 使用Laravel迁移处理外键的正确方法?

Php 使用Laravel迁移处理外键的正确方法?,php,mysql,laravel,foreign-keys,migration,Php,Mysql,Laravel,Foreign Keys,Migration,我是laravel和migrations的新手,我似乎不知道设置外键的正确方法 Schema::create('sights', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->text('description'); $table->integer('contact_id');

我是laravel和migrations的新手,我似乎不知道设置外键的正确方法

Schema::create('sights', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->text('description');
        $table->integer('contact_id');
        $table->integer('media_id');
        $table->timestamps();
    });

    Schema::table('sights', function($table) {
        $table->foreign('contact_id')->references('id')->on('contacts');
        $table->foreign('media_id')->references('sight_id')->on('sightMedia');
    });
如果不清楚,“contact_id”是一个外键,应该引用表中名为“contacts”的列“id”, “媒体id”引用中间表“sightMedia”中的“视线id”列

当我尝试迁移时,它给我的错误如下:

编辑:这是users表,它是迁移过程中的第二个表,所以我想这就是迁移停止并报告错误的地方

        Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('email');
        $table->string('firstName');
        $table->string('lastName');
        $table->string('password');
        $table->string('facebook');
        $table->integer('score_id')->unsigned();
        $table->integer('role_id')->unsigned();
        $table->timestamps();
    });

    Schema::table('users', function ($table) {
        $table->foreign('score_id')->references('id')->on('scores');
        $table->foreign('role_id')->references('id')->on('roles');
    });

提前感谢。

简而言之:如果要从某个表中分配外键,则必须先创建外键所在的表,然后才能在其他表中分配外键。并始终添加->未签名();外键ids@Jesse您能向我们展示一下使用
用户\u角色\u id\u外来的迁移吗?@lewis4u对不起,我能请您澄清一下吗?您的意思是我应该首先为引用表(sights)创建迁移,然后为被引用的表(contacts)创建迁移吗?正如我所说,我对迁移还不熟悉,所以我还不清楚它们的用途和用途,所以我不知道它们的顺序有多重要,但感谢您的帮助@skido我编辑了我的帖子以包含用户表:)@Jesse yes迁移发生的顺序很重要…当您使用外键创建迁移时…外键和表必须在分配之前存在…因此简而言之:如果您想从某个表中分配外键,外键来自的表,必须在分配其他表中的键之前创建。并始终添加->未签名();外键ids@Jesse您能向我们展示一下使用
用户\u角色\u id\u外来的迁移吗?@lewis4u对不起,我能请您澄清一下吗?您的意思是我应该首先为引用表(sights)创建迁移,然后为被引用的表(contacts)创建迁移吗?正如我所说,我对迁移还不熟悉,所以我还不清楚它们的用途和用途,所以我不知道它们的顺序有多重要,但感谢您的帮助@skido我编辑了我的帖子以包含用户表:)@Jesse yes迁移的顺序很重要…当您使用外键创建迁移时…外键和表必须存在,然后才能分配它。。。