SkillAgentSearch skills...

Ntdb

💀 [DISCONTINUED] Nested Transaction for Nette Database (@nette). Use contributte/database.

Install / Use

/learn @contributte/Ntdb
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<p align=center> <a href="https://bit.ly/ctteg"><img src="https://badgen.net/badge/support/gitter/cyan"></a> <a href="https://bit.ly/cttfo"><img src="https://badgen.net/badge/support/forum/yellow"></a> <a href="https://contributte.org/partners.html"><img src="https://badgen.net/badge/sponsor/donations/F96854"></a> </p> <p align=center> Website 🚀 <a href="https://contributte.org">contributte.org</a> | Contact 👨🏻‍💻 <a href="https://f3l1x.io">f3l1x.io</a> | Twitter 🐦 <a href="https://twitter.com/contributte">@contributte</a> </p>

Disclaimer

| :warning: | This project is no longer being maintained. Please use contributte/database. |---|---|

| Composer | minetro/ntdb | |---| --- | | Version | | | PHP | | | License | |

Resources

Inspired by these articles:

  • http://www.yiiframework.com/wiki/38/how-to-use-nested-db-transactions-mysql-5-postgresql/
  • http://www.kennynet.co.uk/2008/12/02/php-pdo-nested-transactions/
  • https://gist.github.com/neoascetic/5269127

Usage

Provide nested transaction via savepoints.

Support

  • MySQL / MySQLi
  • PostgreSQL
  • SQLite

API

  • $t->begin
  • $t->commit
  • $t->rollback
  • $t->transaction or $t->t
  • $t->promise

Begin

Starts transaction.

$t = new Transaction(new Connection(...));
$t->begin();

Commit

Commit changes in transaction.

$t = new Transaction(new Connection(...));
$t->begin();
// some changes..
$t->commit();

Rollback

Revert changes in transaction.

$t = new Transaction(new Connection(...));

$t->begin();
try {
	// some changes..
	$t->commit();
} catch (Exception $e) {
	$t->rollback();
}

Transaction

Combine begin, commit and rollback to one method.

On success it commits changes, if exceptions is thrown it rollbacks changes.

$t = new Transaction(new Connection(...));

$t->transaction(function() {
	// some changes..
});

// or alias

$t->t(function() {
	// some changes..
});

Promise

Another attitude to transaction.

$t = new Transaction(new Connection(...));

$t->promise()->then(
	function() {
		// Logic.. (save/update/remove some data)
	}, 
	function () {
		// Success.. (after commit)
	},
	function() {
		// Failed.. (after rollback)
	}
);

UnresolvedTransactionException

Log unresolved transaction.

Idea by Ondrej Mirtes (https://ondrej.mirtes.cz/detekce-neuzavrenych-transakci).

$t = new Transaction(new Connection(...));
$t->onUnresolved[] = function($exception) {
	Tracy\Debugger::log($exception);
};

Nette

EXTENSION

extensions:
	ntdb: Minetro\Database\Transaction\DI\Transaction

That's all. You can let nette\di autowired it to your services/presenters.

NEON

Register as service in your config file.

services:
	- Minetro\Database\Transaction\Transaction

On multiple connections you have to specific one.

services:
	- Minetro\Database\Transaction\Transaction(@nette.database.one.connection)
	# or
	- Minetro\Database\Transaction\Transaction(@nette.database.two.connection)

Repository | Presenter

use Minetro\Database\Transaction\Transaction;

class MyRepository {

	function __construct(Connection $connection) {
		$this->transaction = new Transaction($connection);
	}

	// OR

	function __construct(Context $context) {
		$this->transaction = new Transaction($context->getConnection());
	}
}

class MyPresenter {

	public function processSomething() {
		$transaction->transaction(function() {
			// Save one..

			// Make other..

			// Delete from this..

			// Update everything..
		});
	}
}

Development

This package was maintain by these authors.

<a href="https://github.com/f3l1x"> <img width="80" height="80" src="https://avatars2.githubusercontent.com/u/538058?v=3&s=80"> </a>

Consider to support contributte development team. Also thank you for using this package.

View on GitHub
GitHub Stars5
CategoryData
Updated3mo ago
Forks1

Languages

PHP

Security Score

72/100

Audited on Dec 9, 2025

No findings