【问题标题】:How to get data from three models that are related to each other in Laravel 5.8如何从 Laravel 5.8 中相互关联的三个模型中获取数据
【发布时间】:2021-10-01 13:23:07
【问题描述】:

所以我有这个模型 Order,它与 ProductOrder 模型具有一对多的关系。还有与 ProductOrder 模型具有相同的一对多关系的 Product 模型。我可以使用 Product 或 Order 获取 PorductOrder 数据。像这样:

Order::with('product_orders')->get();

现在这是返回我的订单以及相关的 ProductOrder 数据。如何在此集合中包含每个 ProductOrder 数据的 Products?

【问题讨论】:

标签: laravel eloquent


【解决方案1】:

根据自己的需要修改函数名、字段名、模型名

第 1 步:

在你的 ProductOrder 模型中使用这个函数:

public function products()
{
    return $this->hasOne('App\Product',  'id', 'product_id');
}

第 2 步:

在您查询之后,您可以用作:

Order::with('product_orders.products')->get();

【讨论】:

  • 这正是我想要的。第 1 步已经完成。我只是想知道如何在您的第 2 步中编写它。不太确定要搜索什么。非常感谢。
【解决方案2】:

听起来ProductOrder 只是一个连接表/模型,对吗?如果是这种情况,您应该更改为 Products 模型的 ManyToMany 关系以

public function orders()
{
  return $this->belongsToMany('App\Orders', 'product_order');
}

和命令

public function products()
{
  return $this->belongsToMany('App\Products', 'product_order');
}

然后就可以访问like了

Order::find(1)->products()->get();

【讨论】:

  • 是的,我会使用这种方式,但 ProductOrder 在我的情况下不仅仅是一个连接表。它具有其他一些属性,例如该特定订单的产品价格、数量
猜你喜欢
  • 1970-01-01
  • 2021-08-05
  • 2020-06-23
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 2014-07-02
相关资源
最近更新 更多