Usare le transaction in Eloquent senza Laravel

Mattepuffo's logo
Usare le transaction in Eloquent senza Laravel

Usare le transaction in Eloquent senza Laravel

In un precedente articolo abbiamo usato Eloquent senza Laravel.

Però ho scoperto che alcune cose mi danno problemi, con l'uso delle transaction (forum.html).

Cercando qui e la ho trovato una soluzione.

Prima di tutto creiamo un model apposito (io l'ho messo nella stessa cartella degli altri):

namespace models;

use Illuminate\Database\Eloquent\Model as EloquentModel;

class MyEloquentModel extends EloquentModel {
  public static function beginTransaction() {
    self::getConnectionResolver()->connection()->beginTransaction();
  }

  public static function commit() {
    self::getConnectionResolver()->connection()->commit();
  }

  public static function rollBack() {
    self::getConnectionResolver()->connection()->rollBack();
  }
}

Poi dobbiamo richiamare queste funzioni in questo modo:


try {
    MyEloquentModel::beginTransaction();
    // DO STUFF

    MyEloquentModel::commit();
} catch (QueryException $ex) {
    MyEloquentModel::rollBack();
}

Enjoy!


Condividi

Commentami!