【问题标题】:How to get products relational array in loop laravel如何在循环 laravel 中获取产品关系数组
【发布时间】:2020-03-20 21:45:40
【问题描述】:

您好,我有一个名为ordersorder_detailsproduct 的表,其中order 包含订单数据,order_details 包含作为订单项目外键的产品键,product 表包含产品信息。

这是我正在使用的查询:

$OrderDetails = OrderDetails::where('order_id',$order_id)->with('Product')->get();

下面是order_details表,

我得到这样的输出:

如何通过 laavel Blade 中的循环仅获取产品详细信息?

【问题讨论】:

  • 你可以在 $OrderDetails 中做一个 foreach 或者简单地使用 $OrderDetails->toArray() 来检查属性

标签: php mysql arrays laravel object


【解决方案1】:

OrderDetails 是您的数据透视表。
您可以在模型中定义多对多关系。

在您的产品模型中:

public function orders()
{
    return $this->belongsToMany(Order::class);
}

在您的订单模型中:

public function products()
{
    return $this->belongsToMany(Product::class);
}

这样您就可以立即从您的订单中获得所有相关产品的集合:

$products = $order->products;

【讨论】:

  • 虽然 OP 似乎已经设置了关系,但我认为您正在尝试提出一种更好的查询方法,但我认为最好指出 withPivot 获取访问权限的重要性到qtyweight等其他属性...
【解决方案2】:

Pit this in your order model

public function order_details()
{
    return $this->hasMany(Orderdetail::class);
 }

将此放入您的订单详细信息模型中

  public function order_detail()
   {
        return $this->belongsTo(Order::class);
  }
public function product()
      {
           return $this->belongsTo(Product::class);
     }

现在在您的控制器中,您可以获得这些产品信息

$order=order::find($id) ;
foreach ($order->order_details as $detail)
{
$products [] =$detail->product - >name;
}
dd($products)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2019-04-29
    • 2018-12-23
    • 2021-12-25
    • 2016-04-21
    • 2018-09-20
    • 1970-01-01
    相关资源
    最近更新 更多