【问题标题】:Laravel belongsToMany get pivot table additional attribute dataLaravel belongsToMany 获取数据透视表附加属性数据
【发布时间】:2020-02-21 05:53:32
【问题描述】:

我有一个 routesstations 表,其中包含关系数据透视表 route_station。我可以完美地使用belongsToMany 获取关系数据。

查看迁移和其他详细信息
Laravel pivot table with multiple columns that needs to insert later

工匠输出

>>> $stations = $route->stations()->orderBy('pivot_station_order', 'asc')->get()
=> Illuminate\Database\Eloquent\Collection {#3097
     all: [
       App\Station {#3077
         id: 2,
         name: "Daugherty Fort",
         code: "LOGA",
         info: "Dolore blanditiis voluptatem recusandae eos. Et minus dicta culpa iusto et sequi fugiat. Et vel totam et earum. Ad consequatur qui consequatur distinctio dolorem modi consequatur. Est non id accusamus magni magni delectus.",
         photo: null,
         created_at: "2020-02-21 04:31:24",
         updated_at: "2020-02-21 04:31:24",
         pivot: Illuminate\Database\Eloquent\Relations\Pivot {#3105
           route_id: 1,
           station_id: 2,
           next_station_id: 3,
           interchange_id: null,
           station_order: 1,
           distance: 2.3,
           duration: 120,
           created_at: "2020-02-21 04:59:07",
           updated_at: "2020-02-21 05:01:15",
         },
       },
       App\Station {#3100
         id: 3,
         name: "Armstrong Green",
         code: "QWUB",
         info: "Eos enim reiciendis voluptas animi aut aliquid. Dignissimos incidunt placeat dolore. Magni et qui ipsam ullam dolorum numquam iusto. Eligendi impedit laudantium sint quia quam reprehenderit necessitatibus quos.",
         photo: null,
         created_at: "2020-02-21 04:31:24",
         updated_at: "2020-02-21 04:31:24",
         pivot: Illuminate\Database\Eloquent\Relations\Pivot {#3127
           route_id: 1,
           station_id: 3,
           next_station_id: 4,
           interchange_id: null,
           station_order: 2,
           distance: 1.2,
           duration: 95,
           created_at: "2020-02-21 05:44:04",
           updated_at: "2020-02-21 05:44:04",
         },
       },
       App\Station {#3128
         id: 4,
         name: "Monroe Locks",
         code: "FXNU",
         info: "Necessitatibus vero sed mollitia reprehenderit est repudiandae. Dolorem voluptas est similique amet molestiae consequatur.",
         photo: null,
         created_at: "2020-02-21 04:31:24",
         updated_at: "2020-02-21 04:31:24",
         pivot: Illuminate\Database\Eloquent\Relations\Pivot {#3092
           route_id: 1,
           station_id: 4,
           next_station_id: 5,
           interchange_id: null,
           station_order: 3,
           distance: 2.7,
           duration: 180,
           created_at: "2020-02-21 05:44:44",
           updated_at: "2020-02-21 05:44:44",
         },
       },
     ],
   }

问题:

但是,我在数据透视表中有一个附加字段 属于stations 表。我想获得这些属性 细节。所以我必须创建另一个站对象来获取next_station_idinterchange_id 的数据吗? 或者有什么方法可以使用 Eloquent 来避免创建新站 对象?

【问题讨论】:

  • 您的问题不清楚您要达到的目标。您链接的问题似乎已经回答了。
  • 你想从像 $station->pivot->distance 这样的车站模型访问一个枢轴属性吗?
  • pivot_station_order 是什么字段?
  • 同意 Junaid,你只想 $route->attach($station, ['distance' => 2.8, 'duration' => 200])
  • 祝你好运

标签: laravel pivot-table


【解决方案1】:

这可能无法立即完成。但是,在我看来,您可以通过创建一个扩展枢轴的 RoutesStaion 模型然后急切地加载该关系来做到这一点。虽然我只会使用像 https://github.com/ajcastro/eager-load-pivot-relations 这样的包来实现这一点。

【讨论】:

    猜你喜欢
    • 2014-12-15
    • 2018-09-26
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 2017-06-04
    • 1970-01-01
    相关资源
    最近更新 更多