Синхронизация ассоциаций в laravel - PullRequest
0 голосов
/ 01 марта 2020

У меня есть вопрос относительно ассоциаций синхронизации, которые предоставляет laravel. У меня есть следующий случай: в моей форме у меня есть таблица, которая позволяет мне создавать динамические c поля ввода с jquery, эта динамическая c таблица позволяет мне регистрировать инструменты, которые используются для изготовления изделия.

Затем я проведу несколько тестов, чтобы они могли понять ситуацию.

Это моя таблица инструментов (2 инструмента)

tools

Это моя таблица вставок (2 типа вставок, которые принадлежат двум предыдущим инструментам)

inserts

Итак, связь между Piece и Инструмент - это отношение многих ко многим. В основном потому, что часть может иметь от одного до нескольких инструментов, и один и тот же инструмент может состоять из одной или нескольких частей. В этот момент я собираюсь отредактировать следующий фрагмент, найденный в моей сводной таблице pice_tool. Элемент с piece_id = 1, с которым связан инструмент tool_id = 1, как вы можете видеть

piece_tool

Для этого примера с этим куском I Я собираюсь связать инструмент, который уже зарегистрирован в моей таблице инструментов, затем я войду в тот же инструмент. Но что-то происходит в моей таблице инструментов, что-то, чего я не понимаю, если в моей таблице инструментов этот инструмент уже существует, her02 создается и регистрируется тем же инструментом (я помещаю тот же инструмент с той же вставкой), я не понимаю, почему он создается снова Если этот инструмент предположительно уже существует, понимает ли моя проблема? Вы хотите получить концептуальную ошибку, которая у меня есть?

Вот как выглядит моя таблица инструментов (дублирован тот же инструмент) Я думаю, что это неправильно.

обновлена ​​таблица инструментов:

tool_update

С помощью этого метода обновления я обновляю уже созданную часть

 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>

Пожалуйста, помогите мне понять, что я делаю неправильно, как я мог это решить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...