【问题标题】:Laravel pivot relationship on relationship (Eloquent)Laravel 关系上的枢轴关系 (Eloquent)
【发布时间】:2019-07-27 20:53:08
【问题描述】:

在 Laravel 中,是否可以将关系放入关系中?

基本上,我已经建立了一个关系,但是我需要另一个关系来建立该关系(如果这有意义的话)。

我的两个模型:

  • 商店
  • 供应商

我的商店和供应商关系模型:

  • 供应商商店
  • store_id
  • supplier_id

如您所见,我有许多 storessuppliers,每个人都可以通过 SupplierStore 表相互关联。

这很好用。

我的问题是对于每个关系(商店和供应商)可以有 许多交货天数。

我的 HasMany 关系:

DeliveryDay
supplier_store_id
day

我想如果我进入 SupplierStore 模型并添加:

public function days()
{
 return $this->hasMany('App\DeliveryDay');
}

可行,但我似乎无法通过 eloquent 访问这些数据?

我希望做这样的事情:

$supplier = 供应商::find($id); $supplier->store->pivot->days

枢轴(SupplierStore)将保存该特定关系的关系,我可以抓住日子。

谁能帮我弄清楚我需要做什么才能实现这一目标?非常感谢您的时间。谷歌搜索了几个小时后,我的头好痛。 :)

【问题讨论】:

标签: laravel eloquent pivot relationship


【解决方案1】:

您可以像这样访问每一天:

public function getDays($id)
{
 $supplier = Supllier::find($id);

 foreach($supplier->stores() as $store)
 {
   foreach($store->days() as $day)
   {
    echo $day->day;
   }
 }
}

或者得到所有的日子

$supplier->stores->days;

【讨论】:

  • 嗨卢卡斯,感谢您的帮助。但我不认为你的建议是解决方案。我想访问关系中的关系。例如 $supplier->store->pivot->days
  • 哦,我的错,所以你想使用你的供应商模型来访问这些日子吗?
  • 是的,伙计,这似乎是不可能的。这太糟糕了!如果我 dd($supplier->stores->pivot) - 有一个关系行,但它是一个空白数组,它没有我添加到关系中的 days() 关系。真的很奇怪。
  • $supplier->stores 你能 dd 这个看看是否返回你的 SupplierModel 吗?如果您可以使用 foreach 循环访问这些日子
  • 所以如果我做这样的事情。 $supplier->stores->first(),它将显示第一个关系。然后我可以做 $supplier->stores->first()->pivot 这将向我展示实际的关系模型。在“枢轴”内部,我看不到天数,即使我尝试说 $supplier->stores->pivot->days 它认为它是我的 SupplierStore 模型上的列而不是关系。如果我做 $supplier->stores->pivot->days() 它只是说函数不存在。
猜你喜欢
  • 2021-03-06
  • 2022-01-09
  • 1970-01-01
  • 2019-07-05
  • 2014-10-23
  • 2018-05-16
  • 1970-01-01
  • 2020-08-23
相关资源
最近更新 更多