Codeigniter는 내장 기능을 통해 데이터베이스 트랜잭션을 처리하기 위한 원활한 메커니즘을 제공합니다. 이를 통해 개발자는 여러 데이터베이스 작업을 단일 작업 단위로 실행할 수 있습니다.
그러나 Codeigniter에서 트랜잭션을 사용할 때 개발자는 외부 기능에서 오류가 발생하는 일반적인 문제에 직면할 수 있습니다. 트랜잭션 블록 내에서 호출되면 롤백이 트리거되지 않습니다.
이 문제를 해결하려면 데이터베이스 작업이 포함된 외부 함수가 모델 내에 캡슐화되어야 하는 것이 아니라 모델 내에 캡슐화되어야 한다는 점을 이해하는 것이 중요합니다. 컨트롤러. 이렇게 하면 데이터베이스 상호 작용이 트랜잭션 컨텍스트 내에서 실행됩니다.
다음 코드 예를 고려하세요.
<code class="php">// Model class YourModel extends CI_Model { public function transactionExample($data, $id) { $this->db->trans_start(); $this->db->insert('table_name', $data); // Updating data $this->db->where('id', $id); $this->db->update('table_name', $test); $this->db->trans_complete(); /*Optional*/ if ($this->db->trans_status() === FALSE) { # Something went wrong. $this->db->trans_rollback(); return FALSE; } else { # Everything is Perfect. # Committing data to the database. $this->db->trans_commit(); return TRUE; } } }</code>
Codeigniter 4에서는 트랜잭션 관련 함수 이름이 다음과 같이 약간 변경되었습니다. 다음:
Function | Codeigniter 3 | Codeigniter 4 |
---|---|---|
Start Transaction | trans_start() | transBegin() |
Complete Transaction | trans_complete() | transCommit() |
Rollback Transaction | trans_rollback() | transRollback() |
Transaction Status | trans_status() | transStatus() |
위 내용은 Codeigniter 트랜잭션 내의 외부 기능 오류가 롤백을 트리거하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!