У меня есть вопрос относительно ассоциаций синхронизации, которые предоставляет laravel. У меня есть следующий случай: в моей форме у меня есть таблица, которая позволяет мне создавать динамические c поля ввода с jquery, эта динамическая c таблица позволяет мне регистрировать инструменты, которые используются для изготовления изделия.
Затем я проведу несколько тестов, чтобы они могли понять ситуацию.
Это моя таблица инструментов (2 инструмента)
Это моя таблица вставок (2 типа вставок, которые принадлежат двум предыдущим инструментам)
Итак, связь между Piece и Инструмент - это отношение многих ко многим. В основном потому, что часть может иметь от одного до нескольких инструментов, и один и тот же инструмент может состоять из одной или нескольких частей. В этот момент я собираюсь отредактировать следующий фрагмент, найденный в моей сводной таблице pice_tool. Элемент с piece_id = 1, с которым связан инструмент tool_id = 1, как вы можете видеть
Для этого примера с этим куском I Я собираюсь связать инструмент, который уже зарегистрирован в моей таблице инструментов, затем я войду в тот же инструмент. Но что-то происходит в моей таблице инструментов, что-то, чего я не понимаю, если в моей таблице инструментов этот инструмент уже существует, her02 создается и регистрируется тем же инструментом (я помещаю тот же инструмент с той же вставкой), я не понимаю, почему он создается снова Если этот инструмент предположительно уже существует, понимает ли моя проблема? Вы хотите получить концептуальную ошибку, которая у меня есть?
Вот как выглядит моя таблица инструментов (дублирован тот же инструмент) Я думаю, что это неправильно.
обновлена таблица инструментов:
С помощью этого метода обновления я обновляю уже созданную часть
public function update(Request $request, $id)
{
if ($request->ajax()){
try {
// Transacciones
DB::beginTransaction();
$piece = Piece::with('tools','gag')->findOrFail($id);
// $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;
}
$gag = $piece->gag()->update($request->all());
$program = $piece->program()->update($request->all());
$piece->update($request->all());
$piece->tools()->syncWithoutDetaching($arrTool);
DB::commit();
} catch (Exception $e) {
// anula la transacion
DB::rollBack();
}
}
}
Это моя динамика c поля ввода:
<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>
Пожалуйста, помогите мне понять, что я делаю неправильно, как я мог это решить