[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Jean Silva
Criador Jean Silva 25/10/2022

Olá Professor, boa tarde!

Pode me ajudar por favor?.

Eu tenho 3 tabelas a qual necessito inserir os dados ao mesmo tempo quando eu salvar no formulário.

Ex: Tabela principal -> Moviment (campo vehicle_id) / Tabela 2 cartMoviment (campo vehicle_id) / Tabela 3 documents, na CartMoviment eu salvo alguns dados que o usuário preenche e pego o Moviment_id da principal e salvo na 2 e assim faço também na tabela 3 documents.

O problema: Ao salvar na tabela cartMoviment, mesmo isolando as requests para cada create, ele está pegando o valor do campo da moviment vehicle_id e salvando esse valor na cartMovient campo vehicle_id, mesmo passando no front os forms diferentes.

    public function store(StoreMovimentRequest $request)
    {
        $this->authorize('create', Moviment::class);
        $moviment = Moviment::create($request->validated());
        $moviment->cartMoviment()->create($request->validated());
        $moviment->document()->create($request->validated());

-----------

        const formCartMoviment = reactive({
           type:                '',
           vehicle_id:          ''
        });

---------

        const formMoviment = reactive({
           type:                '',
           people_id:           '',
           company_id:          '',
           vehicle_id:          '',
           department_id:       '',
           document_id:         '',
           document_type_id:    ''
        });

 

 

 

 

 

 

 

 

Manager Carlos Ferreira 25/10/2022

Olá, Jean!
Tudo bem?

Ajudo sim;

Vou te dar um exemplo de como fazer:

DB::beginTransaction();
try {
    $dataTable1 = $request->only('val1', 'val2');
    $model1 = Model::create($dataTable1);

    $dataTable2 = $request->only('val3', 'val4');
    $dataTable2['fk_tabela_01'] = $model1->id;
    $model2 = Model::create($dataTable1);

    // o código acima poderia ser feito assim:
    $dataTable2 = $request->only('val3', 'val4');
    $model1->nomeRelacionamento->create($dataTable2);

    DB::commit();
} catch (\Throwable $e) {
    DB::rollBack();

    thrown $e;
}

Pegou a ideia?
(https://laravel.com/docs/9.x/database#database-transactions)

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!