简体中文
版本: v2.3.0

action

在事务中执行一组查询。

action($callback)
返回值
void
是否支持事务取决于底层数据库引擎。回调返回 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;