CI 묻고 답하기

제목 CI3 글로벌 트랜잭션 질문입니다.
카테고리 CI 2, 3
글쓴이 eogus 작성시각 2022/11/24 17:47:41
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 3115   RSS

현재 hooks 에다가 

if($CI->input->method() == "post") {
    $CI->db->trans_begin();
}

코드를 넣어서 post요청일 때 자동으로 트랜잭션 시작하게 끔 해놨습니다.

 

$this->db->query($query, $binds);
        if ($this->db->trans_status() === FALSE) {
            return false;
        } else {
            return true;
        }

이 코드가 모델파일에 insert, delete, update 마다 있어서 이걸 전역으로 처리하는 방법을 찾고있습니다.

 

if($CI->input->method() == "post") {
            $CI->db->trans_begin();

            if ($CI->db->trans_status() === FALSE) {
                $CI->db->trans_rollback();
                exit;
            } else {
                $CI->db->trans_commit();
            }
        }

hooks에 이렇게 해봤지만, 

$CI->db->trans_status() === FALSE <<< 이걸 못잡아서 무조건 commit이 되는거같더라구요.

 

스프링에 @transactional 처럼 

메서드 시작하면 트랜잭션시작, 예외가 터지면 롤백, 이상없이 끝나면 커밋 하는걸 만들고있습니다..

 

사용하신분 팁좀 부탁드리겠습니다....

 


 
 다음글 CI3 조회페이지에서 $CI->db->tra... (1)
 이전글 CI DB세션 자동 만료 체크 (1)

댓글

한대승(불의회상) / 2022/11/24 17:50:36 / 추천 0

스프링과 메커니즘이 달라서 전역적으로 지정할 방법은 없습니다.

eogus / 2022/11/24 17:52:44 / 추천 0
if($CI->input->method() == "post") {
            $CI->db->trans_begin();
        }

hooks에 이 코드를 사용해야 겠네요.. hooks에 저 코드를 넣어서 문제점이 있을까요?

지금테스트중인데, 문제없이 post일 때 트랜잭션 시작되는거같습니다.