Laravel - заполнение представления информацией из одной строки (с данными сводки) - PullRequest
0 голосов
/ 09 декабря 2018

В настоящее время у меня есть форма / представление, которое позволяет User сохранить Order.Это также обновляет сводную таблицу с соответствующими Product s и qty s.Что я пытаюсь сделать, так это после того, как эта информация введена и сохранена в базе данных, я хочу отправить пользователя на страницу оформления заказа, которая отображает всю информацию, которую он ввел для этого Order.

Отношения

User hasMany Order

Order belongsToMany Product

Product belongsToMany Order

оформить заказ.blade.php

@foreach ($orders as $order)
  @foreach ($order->products as $product)
    <tr>
    <td>{{ $product->name }}</td>
    <td>{{ $product->pivot->qty }}</td>
  </tr>
    @endforeach
@endforeach

OrderController.php

public function checkout($id)
{
    $user = Auth::user();
    $user->load("orders.products"); //eager load pivot table
    $orders = $user->orders->where('order_id', $id);

    return view('orders.checkout', compact('orders', 'user'));
}

Я знаю, что я вызываю заказ неправильно, потому что, если я изменяю

    $orders = $user->orders->where('order_id', $id);

до

    $orders = $user->orders;

Он отображается правильно, за исключением, конечно, он заполняется каждой деталью Order.

Или есть какой-то элегантный способ для меняпередать данные из функции checkout без этого дополнительного запроса?(Я понимаю о перемещении данных в сеансах, но я работаю с сводной таблицей, и это усложняет ситуацию.

1 Ответ

0 голосов
/ 09 декабря 2018

Если на странице оформления заказа вы хотите использовать только последний заказ, который сделал пользователь, то вы можете просто загрузить этот заказ, используя привязка модели маршрута

Route::get('checkout/{order}', 'OrdersController@checkout');

Затемв вашем контроллере:

public function checkout(Order $order)

так что отсюда вы можете передать этот заказ в представление и перечислить все товары из этого заказа, а также в вашей модели Order у вас должна быть ссылка напользователь, которому принадлежит этот заказ:

public function user()
{
    return $this->belongsTo(User::class);
}

Доступ к столбцам из сводной таблицы будет:

@foreach($order->products as $product)
    <div> {{ $product->pivot->column }} </div>
@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...