TIP게시판

제목 액티브레코드에 IF문 사용하기 [부제. mysql boolen 처리]
글쓴이 kaido 작성시각 2017/03/21 11:36:33
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 13814   RSS

mysql 에는 boolen 이 사용되지 않습니다.

찾아보면 boolen 처리 때문에 if 문 활용법을 알려주더군요.

 

그래서 액티브레코드에 IF문 넣어보니 나오라는 값은 안나오고 IF 조건문이 텍스트로 쫘악 ㅜㅜ

찾아보니 select 에  if 문이 들어가지 않고, case statement 처리 해야 한다고 나오더군요.

긴말 필요없고 실제 소스 보도록 합시다.

$this->db->select("
				M.completeDatetime, O.id,
				CASE WHEN M.isComplete = 1 THEN 'true' ELSE 'false' END as isComplete
			",false);
			$this->db->from("tb_movie as M");
			$this->db->join("tb_order as O","M.orderId = O.id","inner");
			$this->db->where("M.id ",$id);

 

생각 보다 간단 합니다.

mysql 에서 isComplete 이란 필드를 boolen 으로 주면 자동으로 tinyint 로 변경되고 0과 1로 나옵니다.

물론 이걸 php에서 true , false 으로 변경해서 내보내도 되지만 그냥 쿼리 상에서 처리 하고 싶을때는 이렇게 하시면 됩니다.

[여기서 사전 지식! php 에서 true 이나 false는 mysql에서 받는 필드가 0과 1 숫자값으로  받는 필드일 경우 자동으로 0 과 1로 매칭시켜서 저장 시킵니다. 물론 역으로 0과 1은 true 이나 false 으로 구분 지어집니다. 오토캐스팅.]

 

PS.

$this->db->select("query", false);

여기서 false 는 쿼리에 밴틱을 감아 줄것인지 아닌지를 나타냅니다.

아무것도 적지 않으면 true 로 작동 합니다.

 

boolen 처리가 고민 이셨다면 간단하게 즐프 하세요~

 다음글 형태소 검색기 (7)
 이전글 비주얼 스튜디오 CODE 써 보셨나요? (3)

댓글

한대승(불의회상) / 2017/03/21 12:29:48 / 추천 0
놓치기 쉬운 좋은 정보 감사합니다.
변종원(웅파) / 2017/03/21 12:42:34 / 추천 0
따봉~~~ ^^