2014-02-28 4 views
2

Yii MVC에서 CodeIgniter 모델 방법으로 매개 변수를 전달하고 시간 간격 사이에 결과를 검색하려고합니다.CodeIgniter db 쿼리가 예상대로 작동하지 않습니다.

created 속성의 값은 26/2/2014입니다.

querycreatedget_where 절에 관한 두 개의 where 절을 실행하고 연결합니까?

또는 get_where 절만 실행합니까?

결과가 표시되지 않지만 created 값이 전달되고 있습니다.

created 필드 dbtimestamp 값으로 저장하고, I는 I가 api 통해 값을 통과하고 난 24 hour 시간 간격

을 만들의 day/month/year하여 선택 date picker를 사용하고 이것은 어디 막혔다;

추신 대신 ActiveRecordEActiveResource를 사용 codeIgniter

public function findAll($params) { 
     if (!empty($params)) { 
      if (isset($params['created'])) { 
       $e = explode('/', $params['created']); 
       $month = $e[1]; 
       $day = $e[0]; 
       $year = $e[2]; 
       $start = mktime(0, 0, 0, $month, $day, $year); 
       $end = mktime(23, 59, 59, $month, $day, $year); 
       $this->db->where('created >', $start); 
       $this->db->where('created <', $end); 
      } 
      $query = $this->db->get_where($this->_table, $params); 
     } else { 
      $query = $this->db->get($this->_table); 
     } 
     $ret = $query->result_array(); 
     foreach ($ret as $key => $value) { 
      $ret[$key]['order_id'] = $value['id']; 
     } 
     return (isset($ret) && !empty($ret)) ? $ret : false; 
    } 

하여 내장 api 통해 데이터를 전달 제가 yii 내에 $params['created']의 값을 설정하고 codeIgniter 단지 그것을 통과 tryed 때 좋은 예 내가 if을 통과했는지 확인하십시오. codeIgniter 모델에서

내가 가진 : 여전히

if (!empty($params)) { 
     if (isset($params['created'])) { 
      $this->db->where('created >=', 1393246473); 
      $this->db->where('created <=', 1393404935); 
     } 
     $query = $this->db->get_where($this->_table, $params); 
    } else { 
     $query = $this->db->get($this->_table); 
    } 
    $ret = $query->result_array(); 

결과로 어떤 데이터를;

어떤 아이디어가 있습니까?

+0

가해야을 'where'와'get_where'를 연결하십시오. 'get_where' 다음에'var_dump ($ this-> db-> last_query());'를 실행하여 어떤 쿼리가 실행되었는지 확인하고 결과를 답안에 추가하십시오. – Pattle

답변

0

노력이

public function findAll($params) { 
      if (!empty($params)) { 
       if (isset($params['created'])) { 
        $e = explode('/', $params['created']); 
        $month = $e[1]; 
        $day = $e[0]; 
        $year = $e[2]; 
        $start = mktime(0, 0, 0, $month, $day, $year); 
        $end = mktime(23, 59, 59, $month, $day, $year); 
        $this->db->where(array('created >'=> $start, 'created <'=> $end)); 

       } 
       $query = $this->db->get($this->_table); 
      } else { 
       $query = $this->db->get($this->_table); 
      } 
      $ret = $query->result_array(); 
      foreach ($ret as $key => $value) { 
       $ret[$key]['order_id'] = $value['id']; 
      } 
      return (isset($ret) && !empty($ret)) ? $ret : false; 
     } 

당신이 다음 배열의 모든 조건을 통과 get_where을 사용하려는 경우도

$this->db->get_where('mytable', array('id' => $id, 'created' => $cre), $limit, $offset); 

당신은 같은 SQL 쿼리 작성할 수 있습니다 -

$sql = "SELECT * FROM example WHERE payment_status = '0' AND intial_pay_status = '1'"; 

     $query = $this->db->query($sql); 
     if ($query->num_rows() > 0) { 
      foreach ($query->result() as $row) { 
      //echo '<pre>'; print_r($row); 
        } 
       } 
+0

'get_where'는 변경 될 수 없기 때문에 거기에 있습니다. –

+0

'get_where'를 제거하면 작동하지 않습니다. –

+0

다음 $ this-> db-> get_where ('mytable', array ('id'=> $ id), $ limit, $ offset); –

관련 문제