Laravel:使用主索引作为外键?

时间:2018-01-24 10:52:48

标签: php mysql laravel laravel-5 innodb

模型hasOne与模型user之间存在profilePresi关系。这意味着每个用户都有0或1个总统设置。因此,profilePresi表的主索引与外键相同。

这就是我想要添加外键的方式:

Schema::create('profilePresi', function (Blueprint $table) {
          $table->integer('idMember');
          $table->primary('idMember');
          $table->string('idCountry',2);
          $table->timestamps();
});

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

但是我收到以下错误:

enter image description here

我该如何解决?我正在使用InnoDB引擎,所以我知道我可以将索引键设置为外键。

2 个答案:

答案 0 :(得分:3)

而不是使用

table->unsignedInteger('idMember');

使用

{{1}}

答案 1 :(得分:2)

您的users.id列可能是无符号整数,但您的profilePresi.idMember只是一个整数。要用作外键,它们都需要是无符号的。检查是否是这种情况,如果是这样,只需将profilePresi.idMember设为无符号 - 应该这样做。 :)