如何从 Laravel 5.8 中相互关联的三个模型获取数据
How to get data from three models that are related to each other in Laravel 5.8
所以我有这个模型 Order,它与 ProductOrder 模型有一对多的关系。还有与 ProductOrder 模型具有相同的一对多关系的 Product 模型。我可以通过 Product 或 Order 获取 PorductOrder 数据。像这样:
Order::with('product_orders')->get();
现在这将返回我的订单以及相关的 ProductOrder 数据。如何在此集合中包含每个 ProductOrder 数据的产品?
根据您的要求更改函数名称、字段名称、模型名称
第 1 步:
在您的 ProductOrder 模型中使用此函数:
public function products()
{
return $this->hasOne('App\Product', 'id', 'product_id');
}
第 2 步:
在此之后,您可以在查询中使用:
Order::with('product_orders.products')->get();
听起来 ProductOrder
只是一个连接 table/model,是吗?如果是这种情况,您应该将 Products 模型的 ManyToMany 关系更改为
public function orders()
{
return $this->belongsToMany('App\Orders', 'product_order');
}
以及
的命令
public function products()
{
return $this->belongsToMany('App\Products', 'product_order');
}
那你就可以点赞了
Order::find(1)->products()->get();
所以我有这个模型 Order,它与 ProductOrder 模型有一对多的关系。还有与 ProductOrder 模型具有相同的一对多关系的 Product 模型。我可以通过 Product 或 Order 获取 PorductOrder 数据。像这样:
Order::with('product_orders')->get();
现在这将返回我的订单以及相关的 ProductOrder 数据。如何在此集合中包含每个 ProductOrder 数据的产品?
根据您的要求更改函数名称、字段名称、模型名称
第 1 步:
在您的 ProductOrder 模型中使用此函数:
public function products()
{
return $this->hasOne('App\Product', 'id', 'product_id');
}
第 2 步:
在此之后,您可以在查询中使用:
Order::with('product_orders.products')->get();
听起来 ProductOrder
只是一个连接 table/model,是吗?如果是这种情况,您应该将 Products 模型的 ManyToMany 关系更改为
public function orders()
{
return $this->belongsToMany('App\Orders', 'product_order');
}
以及
的命令public function products()
{
return $this->belongsToMany('App\Products', 'product_order');
}
那你就可以点赞了
Order::find(1)->products()->get();