2016-05-03 4 views

Antwort

0

Transaktionsunterstützung ist in \Magento\Framework\DB\Adapter\AdapterInterface Implementierung (\Magento\Framework\DB\Adapter\Pdo\Mysql). Sie können dieses Objekt aus \Magento\Framework\App\ResourceConnection Objekt mit DI erhalten:

/** @var \Magento\Framework\DB\Adapter\AdapterInterface */ 
protected $_conn; 
/** @var \Magento\Framework\App\ResourceConnection */ 
protected $_resource; 

public function __construct(
    \Magento\Framework\App\ResourceConnection $resource 
) { 
    $this->_resource = $resource; 
    $this->_conn = $resource->getConnection(); // get default connection 
} 

dann können Sie Datenbanktransaktion für die Verbindung verwenden:

try { 
     $this->_conn->beginTransaction(); 
     // ... 
     $this->_conn->commit(); 
    } catch (\Exception $e) { 
     $this->_conn->rollBack(); 
    } 
1

Die Frage ist nicht ganz klar, aber Sie sollten nicht Datenbank-Transaktion implementieren innerhalb der Web-Service-Klasse.

Verwenden Sie die _Repository-Klassen, injizieren Sie in den Contructor die Resource Model-Klasse, die den Code für persistente Daten in der Datenbank enthalten.

Beispiel von Kern Magento: eine Kundengruppe über Web-Service-API Speichern

<route url="/V1/customerGroups/:id" method="PUT"> 
     <service class="Magento\Customer\Api\GroupRepositoryInterface" method="save"/> 
     <resources> 
      <resource ref="Magento_Customer::group"/> 
     </resources> 
</route>