У меня есть форма, подобная следующей:

В этой форме есть динамическая таблица c, где через jquery я могу Добавить или удалить поля ввода Dynami c. В эту таблицу записывается информация об инструментах, которые используются для изготовления детали, тогда основная модель является деталью, и, в свою очередь, внутри таблицы участвуют эти два объекта инструмента (красный цвет) и вставка (синий цвет)
Часть моего блейд-файла (динамические c поля ввода)
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Herramientas</h3>
</div>
<div class="box-body">
<table class="table table-striped table-bordered table-condensed table-hover" id="dynamicTable">
<tr>
<th width="5%">Posición</th>
<th width="20%">Herramienta</th>
<th width="20%">Inserto</th>
<th width="20%">Calidad</th>
<th width="5%"><button type="button" name="add" id="add" class="btn btn-success"><i class="fa fa-plus-square"></i></button></th>
</tr>
@forelse ($piece->tools as $p)
<tr>
<td><input type="text" name="addmore[0][position]" value="{{ $p->position }} " placeholder="Posición" class="form-control select2" /></td>
<td><input type="text" name="addmore[0][code_tool]" value="{{ $p->code_tool }}" placeholder="Herramienta"class="form-control" /></td>
<td><input type="text" name="addmore[0][code_insert]" value="{{ $p->insert->code_insert }}" placeholder="Inserto" class="form-control" /></td>
<td><input type="text" name="addmore[0][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
</table>
</div>
</div>
, чтобы сохранить эту информацию, у меня не было проблем, я решил ее так:
метод хранения
$addmore = $request->addmore;
$arrTool = [];
foreach($addmore as $add)
{
$insert = Insert::create([
'code_insert' => $add['code_insert'],
'quality' => $add['quality']
]);
$tools = $insert->tools()->create([
'position' => $add['position'],
'code_tool' => $add['code_tool'],
'insert_id' => $insert->id
]);
$arrTool[] = $tools->id;
}
С этим я отлично храню свои данные из своей динамической таблицы c. Теперь у меня проблема в том, что мне нужно обновить эту информацию. Так как же мне восстановить итерацию информации в этих динамических c полях и обновить их?
Я пытаюсь это сделать безуспешно. Я запутался в этой части:
Метод обновления:
$piece = Piece::findOrFail($id);
// $this->authorize('create', new Piece);
// dd($piece);
$addmore = $request->addmore;
$arrTool = [];
foreach($addmore as $add)
{
$insert = Tool::where('insert_id', $piece->$id)->update([
'code_insert' => $add['code_insert'],
'quality' => $add['quality']
]);
$tools = $insert->tools()->updateOrCreate([
'position' => $add['position'],
'code_tool' => $add['code_tool'],
'insert_id' => $insert->id
]);
$arrTool[] = $tools->id;
}
Мне нужен кто-то, кто поможет мне с обновлением этих динамических c полей
ОБНОВЛЕНО 1
Ну, я понимаю, прежде чем я хочу Чтобы понять ситуацию: как часть это основная модель, существует связь между инструментом и инструментом, в основном потому, что часть может иметь от одного до нескольких инструментов, и один и тот же инструмент может состоять из одной или нескольких частей. Во-первых, вы должны сначала найти кусок вместе со связанными инструментами через эту строку:
$piece = Piece::whit('tools')->findOrFail($id);
Теперь, чтобы перебрать эти динамические c поля, нужно понимать, что в этой динамической c таблице Существует связь между инструментом и вставкой hasMany. Моя проблема здесь, если в моем методе store с этим я создаю:
foreach($addmore as $add)
{
$insert = Insert::create([
'code_insert' => $add['code_insert'],
'quality' => $add['quality']
]);
в моем методе обновления, это не позволяет мне делать что-то вроде этого:
foreach($addmore as $add)
{
$insert = Insert::update([
'code_insert' => $add['code_insert'],
'quality' => $add['quality']
]);
Это то, что меня смутило, каким образом я применяю logi c, потому что здесь я уже перебираю динамические c поля
ОБНОВЛЕНО 2
Я продолжаю пытаться обновить инструменты, которые принадлежат определенной части. Выполнить 2 вида испытаний. В первом тесте я создаю кусок и связываю 2 новых инструмента , как вы можете видеть на изображении, он успешно создан.

Во втором тесте я обновляю созданную деталь , затем я изменяю некоторые поля своей собственной детали, и в то же время я модифицирую соответствующие инструменты. Что случилось? Часть была обновлена, то есть ее собственные поля были обновлены правильно. В случае инструментов вместо обновления уже созданных, произошло обратное, новый инструмент был создан, как вы можете видеть на изображении.

Мой метод обновления выглядит следующим образом:
$piece = Piece::with('tools')->findOrFail($id);
$addmore = $request->addmore;
$arrTool = [];
foreach($addmore as $add)
{
$insert = Insert::where('id', $add)->updateOrCreate([
'code_insert' => $add['code_insert'],
'quality' => $add['quality']
]);
$tools = $insert->tools()->updateOrCreate([
'position' => $add['position'],
'code_tool' => $add['code_tool'],
'insert_id' => $insert->id
]);
$arrTool[] = $tools->id;
}
Пожалуйста, укажите, что я должен изменить в своем методе так, чтобы обновлялись только те инструменты, которые уже были созданы, в моем случае новый инструмент создается.
модель:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Piece extends Model
{
protected $fillable = [
'program_id', 'gag_id', 'denomination', 'code', 'part_piece', 'time', 'observation'
];
public function program()
{
return $this->belongsTo(Program::class);
}
public function gag()
{
return $this->belongsTo(Gag::class);
}
public function tools()
{
return $this->belongsToMany(Tool::class)->withTimestamps();
}
}
модель инструмента:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Tool extends Model
{
protected $fillable = [
'insert_id', 'position', 'code_tool', 'type', 'category', 'status', 'description', 'reason'
];
public function insert()
{
return $this->belongsTo(Insert::class);
}
public function pieces()
{
return $this->belongsToMany(Piece::class)->withTimestamps();
}
}
вставка модели:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Insert extends Model
{
protected $fillable = [
'code_insert', 'quality', 'type', 'category', 'status', 'description', 'reason'
];
public function tools()
{
return $this->hasMany(Tool::class);
}
}