TIP게시판

제목 오류 몇가지
글쓴이 徽人 작성시각 2009/10/26 17:33:14
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 14844   RSS
액티브 레코드를 사용할 적에

몇가지 오류가 있네요.

먼저 CI_DB_active_record::_like함수를 호출할 경우입니다.
$like_statement = $like_statement.sprintf($this->_like_escape_str, $this->_like_escape_char);
728줄에 이런 코드가 있습니다.
여기서 $this->_like_escape_char이라는 필드는 상속하거나 상속받는 클래스의 어디에도 존재하지 않습니다.
하지만 $this->_like_escape_chr이라는 필드는 있죠. (얘네들이 오타낸거 같습니다.  ㄱ-)

그리고 CI_DB_active_record::_where_in함수를 호출할 경우입니다.
$prefix = (count($this->ar_where) == 0) ? '' : $type;
584줄에  보면 이런 코드가 있습니다.
평상시에는 정상적으도 작동하는데 캐시(액티브 레코드 캐시)된 항목이 있을 경우에 다시 이 함수를 호출하면 and(or)절을 붙이지 않습니다. (처음 호출할 때만 그렇습니다.)
$prefix = (count($this->ar_where) == 0 && count($this->ar_cache_where) == 0) ? '' : $type;
이렇게 수정하시면 정상적으로 됩니다.

PS. 웃긴건 _where메서드에는
$prefix = (count($this->ar_where) == 0 AND count($this->ar_cache_where) == 0) ? '' : $type;
이런식으로 정상적으로 해놨습니다. -ㅅ-

 다음글 주소 세그먼트 -> 배열변환 함수 (4)
 이전글 CI 쿼리 캐시의 캐시 경로 설정시 주의 사항 (1)

댓글

변종원(웅파) / 2009/10/26 18:01:34 / 추천 0
좋은 정보 감사합니다.

http://codeigniter.com/bug_tracker/ 버그트래커에도 올리면 좋겠네요. ^^
徽人 / 2009/10/26 18:07:45 / 추천 0
영어는 짧은지라 ㅎㅎ;;
ci세상 / 2009/10/26 23:25:21 / 추천 0

char은 확실한 오타네요 ~~ 7개정도의 파일을 다 수정해 줘야할것 같습니다;;
http://codeigniter.com/forums/viewthread/130015/

두번째것은 예전부터 있었던 문제였는지 ~~ 쿼리구문으로 처리를 하거나 코어를 수정하거나 한듯 보입니다.
http://codeigniter.com/forums/viewthread/99235/


최신 SVN 리비젼을 보니 아직 패치는 안된 상태이구요 ~~ 이 코어파일 수정시에는 체크를 필히 해두어야 할것 같습니다. 나중에 업데이트 할때 잊어 버릴 수 있으니깐요^^