2012-09-03 2 views
6

하나의 "트랜잭션"을 사용하여 모델을 분리 할 수 ​​있습니까? 태그가있는 게시물을 삽입하고 싶습니다. 태그와 게시물은 두 개의 서로 다른 모델에 있습니다. 트랜잭션을 처리하려면 어떻게해야합니까? (아래처럼 :)Codeigniter 두 모델이있는 하나의 트랜잭션

$this->db->trans_start(); 
$this->post_model->insert('...'); 
$this->tags_model->insert('...'); 
$this->db->trans_complete(); 
+0

코드의 문제는 어디에 있습니까? – amd

답변

5

모델 메서드에 다른 트랜잭션 문이 없으면 샘플 코드가 정상적으로 작동해야합니다.

문서에 따라, 당신은 $this->db->trans_start()TRUE를 통과하여 테스트 할 수

$this->db->trans_start(TRUE); 
// Queries/model calls 
$this->db->trans_complete(); 

if($this->db->trans_status() === FALSE) 
{ 
    // do something if it fails 
} 

가 자동으로 완료시 트랜잭션을 롤백합니다 TRUEtrans_start()에 전달. 테이블에서 auto_increment 값 (해당되는 경우)을 확인하여 트랜잭션이 작동하는지 여부를 확인할 수 있어야합니다.

+0

이 경우 컨트롤러가 하나만있는 것 같습니다. 이 코드는 컨트롤러 안에 배치됩니다 ??? – Lykos

+0

@Lykos 꼭 그런 것은 아닙니다. 이것은 모델 방법에도있을 수 있습니다 (즉, 실제로 있어야합니다). 컨트롤러에서 DB로 직접 작업하는 경우 컨트롤러의 DB 코드 주위에 배치됩니다. – Brendan

+0

Personaly 필자는 언제나 내 모델에 내 crud를 넣었지만, Tschempe가 위에 물었을 때, 그 일은 괜찮은 것일까? $ this-> db-> trans_start(); $ this-> post_model-> insert ('...'); $ this-> tags_model-> insert ('...'); 컨트롤러 안쪽에있는 한 번에 다른 db 테이블에 데이터를 삽입 하시겠습니까? – Lykos

관련 문제