Как отобразить количество строк на основе определенного значения в codeigniter - PullRequest
1 голос

Я ищу решение для отображения количества строк на основе данных конкретного столбца с использованием Codeigniter.

Это в основном для проекта регистрации магазина. У меня есть таблица базы данных с именем «shopowner» со столбцом с именем status. и этот столбец состояния имеет только 3 значения. то есть. если статус равен 0, то запись ожидает утверждения, после подтверждения статус станет 1 и 2 для отказа. Теперь на панели инструментов мне нужно отобразить общее количество ожидающих, одобренных и отклоненных записей. Может ли кто-нибудь помочь мне с этим и, пожалуйста, скажите мне, что добавить в модель, контроллер и представление. Я совершенно новичок в Codeigniter. Заранее спасибо.

Модель

public function count_rows($status)
    {
        $this->db->select('status, COUNT(status) as total');
        $this->db->group_by('status', $status);  
        $this->db->get('shopowner');
    }

Ожидаемый результат будет как

Всего регистраций: 4 В ожидании утверждения: 2 Одобрено: 1 Отклонено: 1

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Нет необходимости указывать столбец «status» в первой строке кода, используйте только «$ this-> db-> select (« COUNT (*) как итог »); в первой строке и используйте предложение where со столбцом status вместо столбца status, используя предложение group_by. Можете ли вы попробовать следующий код:

public function count_rows($status)
{
    $this->db->select('COUNT(*) as total');
    $this->db->from('shopowner');
    $this->db->where('status', $status);
    $this->db->group_by('status');  
    $this->db->get();
}
0 голосов
/ 21 мая 2019

Если вы хотите получить всю статистику в одном запросе, вы можете использовать следующий код

 $this->db->select('status, COUNT(status) as total');
 $this->db->group_by('status');  
 $this->db->get('shopowner');

Но если вы хотите получить специальный счетчик статусов, вам нужно добавить свой код статуса в где параметр

$this->db->where(['status' => $status]);
$result = $this->db->get('shopowner');
echo $result->num_rows();

Надеюсь, это поможет вам)

private function count_rows($status) {
    $this->db->where(['status' => $status]);
    return $this->db->get('shopowner')->num_rows();
}

В вашем контроллере

    $data = [
        'pending_approval' => $this->count_rows(4),
        'approved' => $this->count_rows(2),
        'rejected' => $this->count_rows(1)
    ];
    $this->load->view('your_view', $data);

Вы можете использовать <?=$approved?> для вызова $ data

...