插入透视表:ErrorException未定义偏移量:0



我试图使用数组将数据插入数据透视表order_serrvice。我遵循以下代码:https://blog.quickadminpanel.com/master-detail-form-in-laravel-jquery-create-order-with-products/

OrderController:

$order = Order::create($data);
$services = $request->input('services', []);
$quantities = $request->input('quantities', []);
for ($service = 0; $service < count($services); $service++) {
if ($services[$service] != '') {
$order->services()->attach($services[$service], ['quantity' => $quantities[$service]]);
}
}

叶片页:

<tbody>
<tr id='addr0'>
<td>1</td>
<td>
<select name="services[]" class="form-control">
<option value="">-- choose service --</option>
@foreach ($services as $service)
<option value="{{ $service->id }}">
{{ $service->name }} (${{ number_format($service->price, 2) }})
</option>
@endforeach
</select>
{{--<input type="text" name='service[]'  placeholder='Enter Product Name' class="form-control"/>--}}
</td>
<td><input type="number" name='qty[]' placeholder='Enter Qty' class="form-control qty" step="0" min="0"/></td>
<td><input type="number" name='price[]' placeholder='Enter Unit Price' class="form-control price" step="0.00" min="0"/></td>
<td><input type="number" name='total[]' placeholder='0.00' class="form-control total" readonly/></td>
</tr>
<tr id='addr1'></tr>
</tbody>
</table>

Withdd($request):

"services" => array:2 [▼
0 => "1"
1 => "2"
]
"qty" => array:2 [▼
0 => "27"
1 => "2"
]
"price" => array:2 [▼
0 => "489"
1 => "4"
]
"total" => "23647.69"
"sub_total" => "13211.00"
"vat" => "10436.69"

dd($services[$service]):

"1"

错误:

ErrorException未定义偏移量:0$order->services()->attach($services[$service], ['quantity' =>量美元美元[服务]]);

有人能帮忙吗?

而不是用isset检查null。你的for循环从0开始,所以一开始它会检查第0个值而你的数组没有那个索引。因此改变循环开始的迭代值

for ($service=1; $service <= count($services); $service++) {
if (isset($services[$service])) {
$order->services()->attach($services[$service], ['quantity' => $quantities[$service]]);
}
}

我修复了这个问题,这是一个简单的错误,我只是替换了数量与数量在OrderController

$order = Order::create($data);
$services = $request->input('services', []);
$quantities = $request->input('qty', []);
for ($service = 0; $service < count($services); $service++) {
if ($services[$service] != '') {
$order->services()->attach($services[$service], ['qty' => $quantities[$service]]);
}
}

最新更新