RU Русский
Версия: v2.3.0

action

Выполняет запросы внутри транзакции.

action($callback)
Возвращаемое значение
void
Поддержка транзакций зависит от движка базы данных. Если callback возвращает false, транзакция откатывается; в противном случае она фиксируется автоматически.
$database->action(function($database) {

	$database->insert("account", [
		"name" => "foo",
		"email" => "bar@abc.com"
	]);

	$database->delete("account", [
		"user_id" => 2312
	]);

	// Если какое-либо условие не выполнено, верните false, чтобы откатить транзакцию.
	if ($database->has("post", ["user_id" => 2312])) {
		return false;
	}
});

Доступ к данным вне обратного вызова action()

Чтобы использовать данные вне обратного вызова action(), сначала объявите переменную и импортируйте ее в замыкание с помощью use. Любое значение, присвоенное внутри обратного вызова, будет доступно после завершения транзакции.
$result = "";

$database->action(function($database) use (&$result) {

    $database->insert("account", [
        "user_name" => "foo"
    ]);

    $newId = $database->id();

    $result = "Учётная запись создана с ID {$newId}.";
});

echo $result;