【问题标题】:Multiple Foreign Keys in Laravel EloquentLaravel Eloquent 中的多个外键
【发布时间】:2015-07-01 14:57:40
【问题描述】:

我正在建立一个数据库,用于跟踪车辆的“行程”。每次旅行只有一个起点和一个终点,所以我的第一个想法是:

    trips:
      id (int) - primary key
      location_start (int) - foreign key
      location_end (int) - foreign key
    locations:
      id (int) - primary key
      name(text)

location_start 和 location_end 将存储位置表中的 id。但是,我看不到如何在 Eloquent 中进行管理,并且当我使用 vertabelo.com 构建此结构时,我收到一条错误消息“参考名称必须是唯一的”

我应该为此使用数据透视表吗?如果是这样,我不明白如何强制每个行程的关系只能有两个位置,一个起点和终点。

【问题讨论】:

  • 我不了解 Eloquent,但您在 Vertabelo 中遇到的错误是因为您在行程和位置之间有两个引用,而 Vertabelo 自动将其命名为相同的名称。您必须更改参考名称(外键):单击其中一行并编辑参考名称。您的设计似乎符合您想要实现的目标。
  • 我更改了参考并对其进行了排序。 Vertabelo 的错误让我怀疑自己!!

标签: sql laravel eloquent


【解决方案1】:

阅读documentation

在你的情况下,创建一个包含类似这样的迁移

Schema::table('trips', function ($table) {
    $table->integer('location_start')->unsigned();

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

最后,外键定义是在模式构建器中定义的,而不是在 Eloquent 中。

【讨论】:

    猜你喜欢
    • 2020-03-28
    • 1970-01-01
    • 2021-04-09
    • 2015-02-02
    • 1970-01-01
    • 2015-05-21
    • 2022-01-19
    • 2014-09-23
    • 2020-10-20
    相关资源
    最近更新 更多