我有一个名为“平台”的表,如下所示
Schema::create('platforms', function (Blueprint $table) {
$table->tinyIncrements('id');
$table->string('name', 100)->unique();
$table->softDeletes();
$table->timestamps();
});
以及其他表访问,例如
Schema::create('visits', function (Blueprint $table) {
$table->id();
$table->foreignId('platform_id')->nullable()->constrained('platforms')->restrictOnDelete()->restrictOnUpdate();
// ...
$table->timestamps();
});
我无法从访问表到平台表创建外键,因为 Laravel 中的 foregnId 函数将类型设置为 bigInteger
public function foreignId($column)
{
return $this->addColumnDefinition(new ForeignIdColumnDefinition($this, [
'type' => 'bigInteger',
'name' => $column,
'autoIncrement' => false,
'unsigned' => true,
]));
}
并得到
一般错误:1005无法创建表
panel
。visits
(errno:150“外键约束格式不正确”)(连接:mysql,SQL:alter tablevisits
添加约束visits_platform_id_foreign
外键( platform_id
)参考platforms
(id
)关于删除限制关于更新限制)错误
我应该怎样做才能让它发生?
foreignId
强制它成为文档中提到的 unsignedBigInteger。
片段:
<?php
Schema::create('visits', function (Blueprint $table) {
$table->id();
$table->unsignedTinyInteger('platform_id')->nullable();
$table->foreign('platform_id')->references('id')->on('platforms')->restrictOnDelete()->restrictOnUpdate();
// ...
$table->timestamps();
});