В моей форме есть таблица, которая позволяет мне добавлять динамические c поля ввода через jquery, первоначально эти динамические c поля были входным текстом, теперь они стали выбором ввода. Эта таблица позволяет мне записывать информацию об инструментах, используемых для изготовления детали. Моя проблема заключается в том, что при редактировании части, которая уже была создана, как вы можете видеть на изображении
на изображении, можно увидеть, что для В первых двух инструментах фигура связана с идентификатором инструмента (существует связь отношениеToMany между моделью фигуры и инструментом), а для третьего инструмента вы можете увидеть ранее зарегистрированные значения.
Это моя таблица piece_tool выглядит в красном поле:
Здесь вы можете увидеть вышеупомянутое, в моей форме показано, что для ** штуки с id7 вы можете видеть, что в полях Dynami c вы получаете идентификатор связанного инструмента, в данном случае это id9 и id10. **
таблица инструментов:
Что может происходить?
I хочу уточнить, что раньше, когда эти поля были текстового типа, у меня не было этой проблемы при сохранении. Когда я хотел редактировать, он показывал значения правильно. Я думаю, что каждый выбор должен быть неправильно настроен
Вот как у меня это было для входного текста:
<tbody>
@forelse ($piece->tools as $p)
<tr>
<input name="addmore[{{$loop->index}}][insert_id]" value="{{ $p->insert->id }}" hidden/>
<input name="addmore[{{$loop->index}}][tool_id]" value="{{ $p->id }}" hidden/>
<td><input type="text" name="addmore[{{$loop->index}}][position]" value="{{ $p->position }} " placeholder="Posición" class="form-control"/></td>
<td><input type="text" name="addmore[{{$loop->index}}][code_tool]" value="{{ $p->code_tool }}" placeholder="Herramienta"class="form-control"/></td>
<td><input type="text" name="addmore[{{$loop->index}}][code_insert]" value="{{ $p->insert->code_insert }}" placeholder="Inserto" class="form-control"/></td>
<td><input type="text" name="addmore[{{$loop->index}}][quality]" value="{{ $p->insert->quality }}" placeholder="Calidad" class="form-control"/></td>
</tr>
@empty
<td colspan="4"></td>
<td><button type="button" class="btn btn-danger remove-tr"><i class="fa fa-trash "></i></button></td>
@endforelse
</tbody>
Вот как они перешли от ввода текста для выбора: (фрагмент)
<tbody>
@forelse ($piece->tools as $p)
<tr>
<input name="addmore[{{$loop->index}}][insert_id]" value="{{ $p->insert->id }}" hidden/>
<input name="addmore[{{$loop->index}}][tool_id]" value="{{ $p->id }}" hidden/>
<td>
<select name="addmore[{{$loop->index}}][position]" id="position" class="form-control select2">
<option value=""></option>
@foreach ($tools as $tool)
<option value="{{ $tool->id }}"
{{ old('position', $p->id) == $tool->id ? 'selected' : ''}}>
{{ $tool->position }}</option>
@endforeach
</select>
</td>
<td>
<select name="addmore[{{$loop->index}}][code_tool]" id="code_tool" class="form-control select2">
<option value=""></option>
@foreach ($tools as $tool)
<option value="{{ $tool->id }}"
{{ old('code_tool', $p->id) == $tool->id ? 'selected' : ''}}>
{{ $tool->code_tool }}</option>
@endforeach
</select>
</td>
Это мой метод редактирования: (с 'tools' я получаю все инструменты), но я думаю, что его можно сравнить с $ piece, так как я привожу отношения с инструментами
public function edit($id)
{
$piece = Piece::with('gag', 'tools')->findOrFail($id);
// $this->authorize('update', $piece);
return view('admin.pieces.partials.form', [
'part_piece' => Piece::pluck('part_piece', 'part_piece'),
'denomination' => Piece::pluck('denomination', 'denomination'),
'tools' => Tool::all(),
'number_gag' => Gag::pluck('number_gag', 'number_gag'),
'type_gag' => Gag::pluck('type_gag', 'type_gag'),
'category_gag' => Gag::pluck('category_gag', 'category_gag'),
'part_program' => Program::pluck('part_program', 'part_program'),
'piece' => $piece
]);
}
метод обновления
$piece = Piece::with('tools','gag')->findOrFail($id);
Log::debug($request->all());
// $this->authorize('create', new Piece);
$addmore = $request->addmore;
$arrTool = [];
foreach($addmore as $add)
{
$insert = Insert::updateOrCreate(
[ 'id' => array_key_exists('insert_id', $add)? $add['insert_id']: null ],
[
'code_insert' => $add['code_insert'],
'quality' => $add['quality']
]
);
$tools = $insert->tools()->updateOrCreate(
[ 'id' => array_key_exists('tool_id', $add)? $add['tool_id']: null ],
[
'position' => $add['position'],
'code_tool' => $add['code_tool'],
'insert_id' => $insert->id
]
);
$arrTool[] = $tools->id;
}