Цикл заказов в Laravel красноречивый - PullRequest
0 голосов
/ 05 июля 2019

У меня есть три таблицы order_product, таблица пользователей и заказов, все они связаны друг с другом и работают нормально (как и ожидалось).Я хочу зациклить заказы, а не OrderProduct, а также отображать их в представлении.До сих пор это цикл OrderProduct вместо Order, как я могу зациклить ордера и отобразить их в представлении?

Вот код.

Blade view

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

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

Пользователь.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 ($заказы) показывает это

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

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

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

Выше вы получите то, что ищете.

0 голосов
/ 05 июля 2019

Ваш класс User имеет отношение, определенное с OrderProduct, а не с Order.

public function sellerOrders()
{
  return $this->hasMany(OrderProduct::class, 'seller_id');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...