CI 묻고 답하기

제목 active record join 에서 정수형을 조건으로 넣으면 escape 처리가 되는 현상
글쓴이 터푸 작성시각 2014/04/28 11:56:59
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 12886   RSS
$this->db_slave->join('some_table as st','some_table > 0 and st.idx=st1.idx','left');
이런식의 쿼리를 작성하게 되면

실제 쿼리는 

LEFT JOIN `some_table` AS st ON `st`.`idx` > `0` AND `st`.`idx`=`st1`.`idx`

이렇게 정수까지 escape 처리가 되어 쿼리 에러가 나옵니다.
(맞는 표현 : LEFT JOIN `some_table` AS st ON `st`.`idx` > 0 AND `st`.`idx`=`st1`.`idx`)
제가 해결한 방법은 조인문의 0 비교를

where('st.idx > 0',null,false) 조건절에 넣어서 임시로 이용하는데

이렇게 하다 보면 쿼리문 자체가 최적화 되기 힘든 부분도 있고 해서 
실 서비스에 사용하기 꺼려 지는 부분이 있습니다.

위 부분에 대한 해결책 또는 다른 방법을 아시는 분 계실까요?
 
 다음글 uri 파싱 (6)
 이전글 파일 업로드는 잘되는데 파일 삭제가 안되요... (1)

댓글

한대승(불의회상) / 2014/04/28 12:42:02 / 추천 0
on 절에 escape 처리를 하지 않도록 하는 방법이 없으니 지금 처럼 where 절에 기술하는 방법외에는 없어 보입니다.
터푸 / 2014/04/28 12:57:09 / 추천 0
네 그렇군요 감사합니다.