728x90
서론
model에서 db에 insert를 해야 하는 상황인데 key값을 auto_increment로 하자니 이전 값이 삭제돼도 그 값을 기억하고 그다음 값을 입력해 줘서 사용할 수 없고, 일일이 다음 값을 넣어주기에는 이전 값에 +1만 해주면 될 것 같아 굳이라는 생각을 하게 되었습니다.
시도 과정
첫 번째 시도
$result = $this->db->select('필드명')->from('테이블명')->order_by('필드명','desc')->limit(1)->get()->row();
❌ 값이 가져와 지지 않습니다.
▶이상하게도 NULL값도 아니고 그냥 빈 값이 나옵니다...
두 번째 시도
$result = $this->db->select('필드명')->from('테이블명')->order_by('필드명','desc')->limit(1)->get()->result();
❌ 값이 array값입니다.
▶값이 array값으로 나와 db에 insert 되지 않습니다...
세 번째 시도
$this->db->select("필드명");
$this->db->order_by("필드명","DESC");
$result = $this->db->get("테이블명")->row();
❌ 값이 가져와 지지 않습니다.
▶첫 번째 시도와 같은 결과가 나옵니다.
네 번째 시도
$result = $this->db->count_all("테이블명");
❗❗ 총 개수의 +1을 할 경우 중간에 값이 삭제 되었을 때 마지막 값이 중복됩니다.
해결 방법
$query = "SELECT 필드명 FROM 테이블명 ORDER BY 필드명 DESC LIMIT 1";
$result = $this->db->query($query);
$row = (array)$result->row(); // array
$row['필드명']; // 값 추출
▶ query에 값을 넣어주고 object인 $result값을 array로 바꿔준 후 값을 추출하였습니다.
마치며
코드를 짤 때 처음부터 잘 계획하고 개발해야겠다고 다시 한번 다짐을 하는 계기가 되었습니다.😥😥
728x90
'Backend > CodeIgniter' 카테고리의 다른 글
[CodeIgniter] 캐싱 드라이버 (0) | 2023.01.04 |
---|
댓글