如何在用户帐户Laravel中显示订单

时间:2019-06-19 13:03:35

标签: php laravel laravel-5 eloquent

我正在尝试显示买家的订单以及产品详细信息,例如名称,价格,总计等。在买家登录后,应该能够看到他的订单历史记录和他订购的产品。到目前为止,当我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);
 }

我已经尽力而为,但是遇到困难,我们将不胜感激。

1 个答案:

答案 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);
   }

让我知道怎么回事。