У меня есть таблица с несколькими строками ввода, как эта:
<tr>
<td>
<input class = "shelf" name="shelf[]" type="text" required>
</td>
<td>
<select class="book" name="book[][]" multiple="multiple" required>
<option>...</option>
</select>
</td>
</tr>
Пользователь вводит названия полок и выбирает несколько книг для каждой полки. Полки вставляются в одну таблицу, а их идентификаторы и идентификаторы выбранных книг вставляются в другую таблицу. По сути, так:
foreach ($request->shelf as $item =>$v){
$id = Shelf::insertGetId(
['name' => $request->shelf[$item]]
);
foreach ($request->shelf[$item] as $it =>$v) {
$data2 = array(
'fk_Shelf' => $id,
'fk_Book' => $request->book[$item][$it],
);
Shelf_Book::insert($data2);
}
}
Мой второй foreach не работает, потому что он всегда вставляет только одну из выбранных книг. Как мне решить это?