我正在尝试显示买家的订单以及产品详细信息,例如名称,价格,总计等。在买家登录后,应该能够看到他的订单历史记录和他订购的产品。到目前为止,当我dd($ orders)我得到订单详细信息而不是产品详细信息时,这就是我得到的->(https://imgur.com/a/kH0Lara)。因此,我也如何获取产品详细信息。
这是我的模型和功能
买方功能
public function myOrders()
{
$orders = auth()->user()->allOrderFromBuyers()->with('orders')->get();
dd($orders);
return view('myOrders')->with(compact('orders'));
}
User.php
public function products()
{
return $this->hasMany(Products_model::class);
}
public function orders()
{
return $this->hasMany(Order::class, Products_model::class, 'buyer_id', 'seller_id', 'product_id');
}
public function allOrderFromBuyers()
{
return $this->hasMany(OrderProduct::class, 'buyer_id');
}
Oder.php
public function user()
{
return $this->belongsTo('App\User');
}
public function products()
{
return $this->belongsToMany(Products_model::class, 'order_product');//gggg
}
public function orders(){
return $this->hasMany('App\OrderProduct', 'order_id');
}
Products_model.php
protected $fillable= ['seller_id','pro_name','pro_price','pro_info','image','stock','category_id'];
public function orders()
{
return $this->belongsToMany('App\Order', 'order_product');
}
OrderProduct.php
public function products()
{
return $this->belongsTo('App\Products_model');
}
public function buyer()
{
return $this->belongsTo(User::class, 'id', 'buyer_id');
}
public function orders()
{
return $this->belongsTo(Order::class);
}
我已经尽力而为,但是遇到困难,我们将不胜感激。
答案 0 :(得分:0)
您定义关系的方式非常令人困惑,但这就是我的选择: 您这样做:
$orders = auth()->user()->allOrderFromBuyers()->with('orders')->get()
当您的关系定义不正确时,您正试图从买方那里获得所有订单。
首先让我们在Order.php中清理您的关系
public function orders(){
return $this->hasMany('App\OrderProduct', 'order_id');
}
应:
public function orderDetails(){
return $this->hasMany('App\OrderProduct', 'order_id');
}
然后您可以执行以下操作:
auth()->user()->orders()->with('orderDetails')->get()
或者您也可以像这样懒惰:
auth()->user()->orders()->load('orderDetails');
我还注意到您的用户模型有一个错误,请修复它,您不能在一个关系中拥有2个模型永远无法工作。
public function orders()
{
return $this->hasMany(Order::class);
}
让我知道怎么回事。