magento2のサービスレイヤ内でデータベーストランザクションを作成するにはどうすればよいですか?Magento2 - サービス層内のデータベーストランザクション
Webサービスを通じて公開するには、サービスレイヤでトランザクションを使用する必要があります。
magento2のサービスレイヤ内でデータベーストランザクションを作成するにはどうすればよいですか?Magento2 - サービス層内のデータベーストランザクション
Webサービスを通じて公開するには、サービスレイヤでトランザクションを使用する必要があります。
トランザクションのサポートは、\Magento\Framework\DB\Adapter\AdapterInterface
の実装(\Magento\Framework\DB\Adapter\Pdo\Mysql
)です。あなたはDIを使用して\Magento\Framework\App\ResourceConnection
オブジェクトからこのオブジェクトを取得することができます:
/** @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
}
あなたは、接続のためのデータベーストランザクションを使用することができます。
try {
$this->_conn->beginTransaction();
// ...
$this->_conn->commit();
} catch (\Exception $e) {
$this->_conn->rollBack();
}
質問は非常に明確ではありませんが、あなたがデータベーストランザクションを実装していませ必要がありますWebサービスクラスの内部。
_Repositoryクラスを使用して、データを永続化するためのコードを含むリソースモデルクラスをコンストラクタに挿入します。コアMagentoのから
例:WebサービスAPIを介して
<route url="/V1/customerGroups/:id" method="PUT">
<service class="Magento\Customer\Api\GroupRepositoryInterface" method="save"/>
<resources>
<resource ref="Magento_Customer::group"/>
</resources>
</route>
を顧客グループを保存