Итак, я только что узнал, как использовать вложенные итерации для загрузки данных из сводной таблицы.Сейчас я пытаюсь сохранить данные, но не могу.
У меня есть «новый» блэйд, с помощью которого клиент может создать новый «Заказ» со многими «продуктами».
Лезвие в основном просто перебирает все доступные Product
с.(Насколько я могу судить, именно так нужно настроить блейд)
new.blade.php
{!! Form::open(['url' => '/orders/store']) !!}
@foreach ($products as $product)
<h1>{{ $product->name }}</h1>
<p>{{ $product->description }}</p>
{{ Form::text('qty', null }}
@endforeach
Итак, это моя попытка использовать вложенную итерацию для передачиданные «кол-во» в сводную таблицу.
OrderController.php
public function store(Request $request)
{
$user = Auth::user();
$user->load("orders.products"); //eager load pivot table
/*NEW ORDER*/
$order = new Order;
$order->user_id = Auth::user()->id;
$order->save();
$product_id_array = [];
/*PIVOT*/
$products_to_sync_ids = [ 1,2,3,4,5,6,7,8,9 ];
$sync_data = [];
for ($i = 0; $i < count($products_to_sync_ids); $i++) {
$qty = $request->input('qty');
$sync_data[$products_to_sync_ids[$i]] = ['qty' => $qty];
}
$order->products()->sync($sync_data);
«Порядок» сохраняется, но кол-во всегда по умолчанию соответствует последнему Product
с введенному кол-ву.