2012-03-05 9 views
1

codeigniter에서 order_by 부분을 어떻게 처리합니까? codeigniter에서 order_by (time)을 올바르게 처리하는 방법

SELECT <field> FROM <table> ORDER BY STR_TO_DATE(<field>, '%H:%i') DESC LIMIT 0 , 30 

이 시도하지만 필드 이름으로 " '%H:%i')"를합니다.

$this->db->order_by("STR_TO_DATE(".$field.", '%H:%i')", $order); 

이 필드는 내가 원하는 VARCHAR 내가 반환에게 그 결과를 게시 쿼리입니다하지만 난 CodeIgniter의에서 할 방법을 모르는

난 당신이 CodeIgniter의에서 것을 할 수 있다고 생각하지 않습니다
+0

는 몇 가지를 테스트 한 후, 그것은 보인다. MySQL 함수는 Codeigniter의 Active Record와 함께 사용하는 것이 항상 고통 스럽습니다. –

답변

2

버전 2.1.0. Madmartigan이 말했듯이 쉼표는 CI가 backticks에서 잘못된 부분을 감싸고 따라서 mysql 오류를 발생시킵니다. 나는이 작업을위한 실제 수정보다 해결 방법을 찾기 위해 order_by 함수에 활성 레코드를 파고 들지는 않는다고 생각합니다. 나는 업스트림에 체크인하고 외관상으로는 interesting 인 것을 가지고있다.

활성 레코드 order_by에 대한 대안을 찾기 위해 더 많은 시간을 소비하지 않았지만,이 대안에 의지하여 정상적으로 작동하는 것으로 보입니다. 다음을 고려하세요? `STR_TO_DATE (LAST_LOGIN, \ ''%의 H : % 내가 ') \``(가)`,`쉼표 역 따옴표에서 잘못된 부분을 래핑하는 CI를 트리거처럼

$sql = "SELECT <field> FROM <table> ORDER BY STR_TO_DATE(?, '%H:%i') desc LIMIT 0, 30"; 
$this->db->query($sql, array('19:20')); 
+1

재밌 네요, 저는 무작위로이 질문을 확인하기 위해 돌아 왔고 당신은 1 분 전에 게시하지 않았습니다. 나는 당신이 CI의 AR에 맞서 싸우지 않고 단지 "일반적인"SQL을 사용하지 않는다는 것에 동의한다. 그러나이 함수를 작성하기는 쉽지만. –

+0

사실, 성능을 향상시키기 전에 먼저 작동하는 부분을 먼저 작동시켜 봅시다. CI의 다음 릴리스 인 order_by의 추가 매개 변수는 OP에서 살펴볼만한 가치가 있다고 생각합니다. – Jasonw

관련 문제