Php Laravel:使用主索引作为外键?
我在modelPhp Laravel:使用主索引作为外键?,php,mysql,laravel,laravel-5,innodb,Php,Mysql,Laravel,Laravel 5,Innodb,我在modeluser和modelprofilePresi之间有一个hasOne关系。这意味着每个用户都有0或1个总统设置。因此,profilePresi表的主索引与外键相同 这就是我想要添加外键的方式: Schema::create('profilePresi', function (Blueprint $table) { $table->integer('idMember'); $table->primary('idMember');
user
和modelprofilePresi
之间有一个hasOne
关系。这意味着每个用户都有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');
});
但是,我得到以下错误:
我怎样才能修好它?我正在使用InnoDB引擎,因此我知道我可以将索引键设置为外键。您的users.id列可能是一个无符号整数,但您的profilePresi.id成员只是一个整数。要用作外键,它们都需要无符号或无符号。检查情况是否如此,如果是这样,只需将profilePresi.idMember也设为未签名-这样就可以了。:) 您的users.id列可能是一个无符号整数,但您的profilepressi.idMember只是一个整数。要用作外键,它们都需要无符号或无符号。检查情况是否如此,如果是这样,只需将profilePresi.idMember也设为未签名-这样就可以了。:) 而不是使用
$table->integer('idMember')代码>
使用
table->unsignedInteger('idMember')编码>而不是使用
$table->integer('idMember')代码>
使用
table->unsignedInteger('idMember')代码>让您的用户按顺序迁移到profilePresi之前,这也有助于遵循Laravel的表和列命名约定。因此,所有小写和下划线,而不是camelCase.have您的用户迁移在profilePresi之前的顺序??也将有助于遵循Laravel的表和列命名约定。因此,所有小写和下划线,而不是camelCase。使profilePresi.idMember
unsigned成功,谢谢。但是,users.id
列只是一个自动递增的字段$table->increments('id')代码>。AI字段在Laravel中是否自动取消签名?是的,增量基本上只是一种简写形式。:)制作profilePresi.idMember
unsigned确实有效,谢谢。但是,users.id
列只是一个自动递增的字段$table->increments('id')代码>。AI字段在Laravel中是否自动取消签名?是的,增量基本上只是一种简写形式。:)