트랜잭션은 데이터베이스에서 실행되는 쿼리를 한 단위로 묶어서 처리합니다.
쿼리를 실행할 수도 있고, 모든 쿼리를 롤백(실행되지 않은 상태로 되돌림) 할 수도 있습니다.
라라벨의 쿼리 빌더에서 제공하는 트랜잭션 기능은
클로저 안에서 묶은 코드의 일부에서 예외가 발생하면 이를 감지하고 트랜잭션을 롤백합니다.
DB::transaction(function() use ($userId, $numVotes) {
DB::table('users')
->where('id' , $userId)
->update(['votes' => $numVotes]);
DB::table('votes')
->where('user_id' , $userId)
->delete();
});// 트랜잭션을 실행합니다
DB::beginTransaction();
// 데이터베이스 작업을 수행합니다
if ($badThingsHappened) {
DB::rollBack();
}
// 커밋으로 작업을 마칩니다
DB::commit();처음 시작은 DB::beginTransaction() 메서드로 트랜잭션을 시작하고
마지막에는 DB::commit(); 으로 마치거나 DB::rollBack(); 으로 되돌릴 수 있습니다.