我有三个表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 ▶}
]
}
答案 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
以上内容将为您提供所需的东西。