我正在尝试在 laravel 5.8 中创建外键约束
i am trying to create foreign key constraint in laravel 5.8
我无法创建外部 table 密钥:
$table->increments('rt_id');
$table->integer('issued_id')->unsigned();
$table->foreign('issued_id')->references('issue_id')->on('book_issues');
$table->integer('book_id')->unsigned();
$table->foreign('book_id')->references('id')->on('book_details');
我也试过这个:
$table->bigIncrements('rt_id');
$table->unsignedBigInteger('issued_id');
$table->foreign('issued_id')->references('issue_id')->on('book_issues');
$table->unsignedBigInteger('book_id');
$table->foreign('book_id')->references('id')->on('book_details');
查看您的两个表我发现,为了获得成功的外键...引用字段和引用字段必须具有完全相同的数据类型和选项。
因此,在您的情况下,您应该删除 unsignedBigInteger
和 unsigned
,只需像这样使用 integer
:
$table->integer('issued_id')
让我知道这是否适合你
我刚刚重新检查了所有字段和数据类型,我发现我对主键使用了增量,而在外键中我使用了 integer('book_id')->unsigned()
在迁移时,我已经迁移了主要的 table 所以,我使用了 php artisan migrate:fresh 命令然后这次,它正在迁移外国 table 时间所以,我'我得到错误。
在我的外键 table 先放,然后主键 table 最后放之前。
因此,我更改了模型名称并根据关键约束进行了替换,因为主要 table 应该首先存储在迁移文件夹中,即使有时在迁移时它也不会按顺序迁移到您的文件夹中。
所以,我用了 php artisan migrate:fresh
此命令正在迁移序列中的所有 table。
我无法创建外部 table 密钥:
$table->increments('rt_id');
$table->integer('issued_id')->unsigned();
$table->foreign('issued_id')->references('issue_id')->on('book_issues');
$table->integer('book_id')->unsigned();
$table->foreign('book_id')->references('id')->on('book_details');
我也试过这个:
$table->bigIncrements('rt_id');
$table->unsignedBigInteger('issued_id');
$table->foreign('issued_id')->references('issue_id')->on('book_issues');
$table->unsignedBigInteger('book_id');
$table->foreign('book_id')->references('id')->on('book_details');
查看您的两个表我发现,为了获得成功的外键...引用字段和引用字段必须具有完全相同的数据类型和选项。
因此,在您的情况下,您应该删除 unsignedBigInteger
和 unsigned
,只需像这样使用 integer
:
$table->integer('issued_id')
让我知道这是否适合你
我刚刚重新检查了所有字段和数据类型,我发现我对主键使用了增量,而在外键中我使用了 integer('book_id')->unsigned() 在迁移时,我已经迁移了主要的 table 所以,我使用了 php artisan migrate:fresh 命令然后这次,它正在迁移外国 table 时间所以,我'我得到错误。 在我的外键 table 先放,然后主键 table 最后放之前。 因此,我更改了模型名称并根据关键约束进行了替换,因为主要 table 应该首先存储在迁移文件夹中,即使有时在迁移时它也不会按顺序迁移到您的文件夹中。 所以,我用了 php artisan migrate:fresh 此命令正在迁移序列中的所有 table。