Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [Laravel] Problema con transaction

    ciao!

    sto cercando di usare le transaction in laravel.
    seguendo alcune giude ho fatto così:
    codice:
    DB::beginTransaction();
    
    try {
        // TESTATE = add_orfo
        $forn = $data['testata']['co_fornitore'];
        $bolla = trim($data['testata']['co_bolla']);
        $dd = date_format(date_create($data['testata']['co_data']), 'Y-m-d H:i:s');
        $note = trim($data['testata']['co_note']);
        $dd2 = date_format(date_create($data['testata']['co_data']), 'Ymd');
    
        DB::insert('CALL add_orfo(?,?,?,?,?)', array($forn, $bolla, $note, $dd, $dd2));
    
        // RIGHE = add
        $righe = $data['righe'];
        foreach ($righe as $rr) {
            $caDescr = trim($rr['co_descrizione']);
            $caDizionario = $rr['co_dizionario'];
            $caReparto = $rr['co_reparto'];
            $caBolla = $bolla;
            $caUtente = '';
            $caQta = $rr['co_qta'];
            $caStato = '';
            $caPrezzo = 0;
            $caPrezzoAcq = $rr['co_prezzo'];
            $caOrd = 0;
            $caStag = '';
    
            $res = DB::select('CALL add_articolo_gest(?,?,?,?,?,?,?,?,?,)', array(
                0, $caDescr, $forn, $caReparto, $caDizionario, $caPrezzo, $caPrezzoAcq, 21, 0, $caStag
            ));
    
            var_dump($res);
        }
    
        DB::commit();
    
    } catch (QueryException $ex) {
        DB::rollback();
    
        return response()->json([
            'res' => 'ko',
            'message' => 'Errore: ' . $ex->getMessage()
        ]);
    }
    nella query dentro al foreach c'è volutamente un errore.
    l'eccezione viene cattirata, ma il rollback non viene eseguito.
    nel senso che il record creato nella prima istruzione rimane nella tabella.
    dove sto sbagliando??

  2. #2
    penso di aver risolto.
    il problema era che la tabella era mysam, e non innodb (errore mio).
    riprovato dopo averla modificata in innodb ed ha funzionato.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.