迁移中的外来 ID,其表名不是本地键的复数形式

问题描述 投票:0回答:1

如何使用引用名称与列名称不相关的表的列创建 Lumen 迁移?

示例:

以下内容会抛出找不到 user_destinations 的错误。

$table->foreign('user_destination')->references('id')->on('locations');

$table->foreignId('warehouse_isle_shelf_id')->constrained();

这里的目的是让它寻找

warehouse_isles
而不是
warehouse_isle_shelves
warehouse_isle_shelfs
,因为我不确定 Lumen 如何处理复数形式的单词,复数不只是采用单数形式并附加
s
.

php laravel lumen laravel-migrations
1个回答
3
投票

您的代码应该可以工作,因为您已经引用了表名称

locations

$table->foreign('user_destination')->references('id')->on('locations');

但是第二行要求 Laravel 猜测名字。这是文档中讨论它的相关部分:

foreignId 方法是 unsignedBigInteger 的别名,而 constrained 方法将使用约定来确定引用的表名和列名。如果您的表名与约定不匹配,您可以通过将其作为参数传递给约束方法来指定表名

所以它应该看起来像:

$table->foreignId('warehouse_aisle_shelf_id')->constrained('warehouse_aisles');
© www.soinside.com 2019 - 2024. All rights reserved.