Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel:使用主索引作为外键?_Php_Mysql_Laravel_Laravel 5_Innodb - Fatal编程技术网

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

Php 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');

我在model
user
和model
profilePresi
之间有一个
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中是否自动取消签名?是的,增量基本上只是一种简写形式。:)