2009-10-20 2 views
0

내가 가진 COUNT을하려고하고 WHERE 아래의 코드와 그것에 절 :CodeIgniter의 SQL 쿼리

function count_tasks($userId) { 

    $this->db->count_all('tasks'); 
    $this->db->where('tasksAssignedTo', $userId); 
    $query = $this->db->where('taskPriority_taskPriorityId !=', 6); 
    return $query; 

} 

그러나 CodeIgniter의는 다음 쿼리 실행 것으로 보인다 :

SELECT COUNT(*) AS `numrows` FROM `tasks` 

왜 Where 절이 실행되지 않았습니까? 나는 그것이 $query을 반환하는 것과 관련이 있다고 생각하지만 나는 확실히 모른다.

답변

1
function count_tasks($userId) { 
     $this->db->count_all('tasks'); 
     $this->db->where('tasksAssignedTo', $userId); 
     $query = $this->db->where('taskPriority_taskPriorityId !=', 6); 

     return $query; 

귀하의 질의를 수정하십시오. count_all 함수는 클래스의 SQL 빌드를 중지합니다.

function count_tasks($userId) 
    { 
      $this->db->where('tasksAssignedTo', $userId); 
      $this->db->where('taskPriority_taskPriorityId !=', 6); 
      $query = $this->db->count_all('tasks'); 

      return $query; 
    } 
2

대신이 방법을 시도해보십시오 당신에게 다음 쿼리를 제공해야

function count_tasks($userId) { 

    $this->db->select('count(*) as task_count'); 
    $this->db->from('tasks'); 
    $this->db->where('tasksAssignedTo', $userId); 
    $this->db->where('taskPriority_taskPriorityId !=', 6); 

    $query = $this->db->get(); 

    foreach ($query->result() as $row) { 
     echo $row->task_count; 
    } 

} 

는 (분명히 userId를 실제 값으로 대체됩니다 $) :

SELECT count(*) as task_count FROM (`tasks`) WHERE `tasksAssignedTo` = $userId AND `taskPriority_taskPriorityId` != 6 

을 우리는 CodeIgniter의의 선택을 사용하고 () 함수를 사용하여 쿼리의 SELECT 부분을 명시 적으로 씁니다. 그런 다음 기본적으로 그룹의 모든 레코드를 카운트하는 SQL 함수 인 "count (*)"를 사용할 수 있습니다. 기본적으로 CodeIgniter의 count_all() 함수는 수행하지만 수동으로 작성합니다. select() 함수의 "as task_count"부분은 반환 된 쿼리에서 참조 할 항목을 제공합니다.

그러면 SQL 쿼리의 FROM 및 WHERE 부분을 설정하기 만하면됩니다. get() 함수는 쿼리를 실행하고 결과를 반환하기 만하면 결과가 $ query에 지정됩니다. 그런 다음 "$ row-> task_count"를 통해 행 수에 액세스 할 수 있습니다.

희망이 있습니다. 궁금한 점이 있으면 알려주세요.