버전: v2.3.0
action
트랜잭션 안에서 여러 쿼리를 실행합니다.
action($callback)
callback [callable]
트랜잭션 안에서 실행할 작업을 담은 콜백 함수입니다.
반환값
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;