Laravel雄辩的循环订单

时间:2019-07-05 17:20:31

标签: php laravel laravel-5 eloquent

我有三个表order_product,users和orders表,它们彼此相关并且工作正常(按预期)。我想循环订单而不是OrderProduct,并在视图中显示它们。到目前为止,它是在循环使用OrderProduct而不是Order,如何循环显示订单并在视图中显示?

这是代码。

刀片视图

    @foreach ($orders as $order)
    <div>{{ presentPrice($order->billing_total) }}</div>
    @endforeach

    @foreach ($order->productInfo as $product)
   <div>{{ presentPrice($product->price) }}</div>
    @endforeach

User.php

  public function sellerOrders()
  {
  return $this->hasMany(OrderProduct::class, 'seller_id');
  }

OrderProduct.php

   public function productInfo()
 {
     return $this->belongsTo('App\Product');
 }

 public function orderInfo()
 {
    return $this->belongsTo(Order::class,  'order_id');
 }

Order.php

   public function user()
  {
    return $this->belongsTo('App\User', 'seller_id');
  }

  public function products()
  {
    return $this->belongsToMany('App\Product')->withPivot('quantity','total','Subtotal');
  }

控制器

   $orders = Auth::user()->sellerOrders()->with('productInfo','orderInfo')->get();

当我dd($ orders)时显示此内容

  Collection {#306 ▼
  #items: array:2 [▼
  0 => OrderProduct {#300 ▶}
  1 => OrderProduct {#301 ▶}
  ]
  }

2 个答案:

答案 0 :(得分:0)

您的User类具有与OrderProduct而不是Order定义的关系。

public function sellerOrders()
{
  return $this->hasMany(OrderProduct::class, 'seller_id');
}

答案 1 :(得分:0)

dd($order)返回了应有的状态。由于sellerOrders()关系与OrderProduct表有关。不过,您确实希望通过该调用加载order,因此您应该能够直接在刀片服务器上访问该one-to-one

@foreach ($orders as $order)
    <div>{{ presentPrice($order->orderInfo->billing_total) }}</div>
@endforeach

@foreach ($order as $product)
    <div>{{ presentPrice($product->productInfo->price) }}</div>
@endforeach

以上内容将为您提供所需的东西。