2009-10-20 2 views
0

Я пытаюсь сделать COUNT, который имеет ИНЕКЕ в нем с ниже код: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` 

Почему являются ли условия, которые не выполняются? Я думаю, что это связано с возвратом $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 запроса. Затем мы можем использовать «count (*)», который является функцией SQL, которая в основном учитывает все записи в группе (по сути, что делает функция count_all() CodeIgniter, но мы пишем ее вручную). Часть «как task_count» функции select() просто дает нам ссылку на возвращаемый запрос.

Затем мы просто устанавливаем части FROM и WHERE нашего SQL-запроса, соответственно. Функция get() просто запускает запрос и возвращает результат, и мы присвоили результат запросу $ query. Затем мы можем получить доступ к счету строк через «$ row-> task_count».

Надеюсь, что это поможет. Дайте знать, если у вас появятся вопросы.

Смежные вопросы