PHP/Laravel-高级关系和动态列数

PHP/Laravel-高级关系和动态列数,php,laravel,relationship,Php,Laravel,Relationship,我试图在Laravel中重现以下逻辑: 现在这是一个动态的航行时间表,目前在Excel中创建。在我的Laravel应用程序中,我想为每个出发地/目的地(出发地到目的地): 动态定义尽可能多的“路线”(例如,一条路线是10月30日在承运人ACL上的大西洋天空) 为我的路线定义尽可能多的ETD和ETA列(城市名称和日期)。例如,我可能希望指定特定路线有两个ETD点 例如:纽约11月6日和波士顿11月12日 ETA列也是如此。我需要能够动态地添加更多的列,如果特定的路由需要这样做 我很难理解

我试图在Laravel中重现以下逻辑:

现在这是一个动态的航行时间表,目前在Excel中创建。在我的Laravel应用程序中,我想为每个出发地/目的地(出发地到目的地):

  • 动态定义尽可能多的“路线”(例如,一条路线是10月30日在承运人ACL上的大西洋天空)
  • 为我的路线定义尽可能多的ETD和ETA列(城市名称和日期)。例如,我可能希望指定特定路线有两个ETD点
    • 例如:纽约11月6日和波士顿11月12日
    • ETA列也是如此。我需要能够动态地添加更多的列,如果特定的路由需要这样做
我很难理解这样做所需要的逻辑

现在,我的想法是:

  • 创建一个
    Carriers
    模型和表,其中包含所有不同的载体(例如“ACL”)
  • 创建一个
    船舶
    模型和表格,其中包含特定承运人的所有不同船舶(例如“大西洋天空”和“大西洋帆”)。然后,我将在这两个模型上定义一个
    hasOne
    关系
  • 现在,我还需要一些表格,其中包含特定的路线(例如,纽约到哥本哈根),然后列出所有拥有该路线的运营商

    但是,当我需要能够动态添加尽可能多的
    ETD
    ETA
    点时,我无法理解应该如何做到这一点

    我的想法是:

  • 创建一个
    路由
    模型,然后保存路由信息,例如(船只id、截止日期)-但是,当不同的路由可能不同时,如何创建'etd1、etd2、etd3、eta1、eta2、eta3列

  • 听起来您的
    Route
    模型应该有一个船只id和起始和结束目的地。然后
    routes\u stops
    模型或类似的模型会详细说明起始和结束之间的所有单独站点。

    我建议您将数据作为JSON数据传递到POST请求主体中

    否则,将它们作为url参数中的url编码json对象传递

    大概是这样的:

    $myDataObj = [["type" => "ETD", "city" = "New York", "date" = "6/NOV"]
                  ["type" => "ETA", "city" = "Boston", "date" = "12/NOV"]];
    
    $myDataJSON = json_encode($myDataObj);
    

    然后,您可以在json编码的url中添加
    $myDataJSON
    作为参数值。

    存储“stops”是否有意义在
    json
    中的
    routes
    表中?然后动态地将它们作为一个数组获取?我将首先将它们拆分为一个单独的表。这样,您可以充分利用数据库关系。通过将这些信息填充到JSONB blob中,查询、筛选等将变得更加困难。