Codeigniter SQL sorgusu

3 Cevap php

Merhaba ben WHERE yan tümceleri olan bir COUNT yapmaya çalışıyorum, ben kullanıyorum kodudur

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

    return $query;

Ancak Codeigniter sadece aşağıdaki sorguyu çalışıyor gibi görünüyor

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

Neden Ben bana $ sorgu dönen ile olan bir duygu var ama nerede çalışma almak üzerindeki her türlü yardım için bilmiyorum hükümler büyük bir yardımcı olacaktır nerede çalışmıyor.

3 Cevap

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

        return $query;

sorgunuzu değiştirmek. * Count_all * fonksiyonu sınıfın SQL bina durur.

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

            return $query;
   }

Yerine bu yaklaşımı deneyin:

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;
    }

}

Size aşağıdaki sorgu (Açıkçası $ userId bir gerçek değeri ile değiştirilecektir) vermeli:

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

Biz açıkça sorgusunun SELECT bölümünü yazmak için CodeIgniter'ın select () fonksiyonunu kullanıyoruz. Sonra biz temelde bir gruptaki tüm kayıtları sayar bir SQL işlevi olan "sayısı (*)" kullanabilirsiniz (CodeIgniter'ın count_all () fonksiyonu yapar aslında ne, ama biz elle yazıyoruz). Select () fonksiyonu "olarak task_count" kısmı sadece bize döndü sorgudan başvurmak için bir şey verir.

Sonra biz sadece FROM ve WHERE kuruyoruz bizim SQL sorgusu parçaları, sırasıyla. Get () işlevi sadece sorguyu çalıştırır ve sonucu verir ve biz $ sorguya sonucu tayin ettik. Biz o zaman "$ row-> task_count" üzerinden satır sayısı erişebilirsiniz.

Umut olur. Herhangi bir sorunuz varsa bana bildirin.