CodeIgniter: получить значение из одного столбца из таблицы - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть таблица, содержащая личные данные, такие как имя, пол, адрес и т. Д. У меня вопрос, как получить общее количество мужчин и женщин из моей таблицы?

Это мой SQLquery:

SELECT gender, COUNT(*) AS total
FROM personaldata
GROUP BY gender

Это мой код в моей модели:

public function gender_count()
{
    $this->db->select('gender, count(*) as total');
    $this->db->from('personaldata');
    $this->db->group_by('gender');

    $query = $this->db->get()->row()->total;
    return $query->result();
}

Итак, как записать этот SQL-запрос в модель CI и контроллер?Я просто хочу показать общий пол на моем сайте.

Спасибо

Ответы [ 3 ]

1 голос
/ 30 апреля 2019

Есть два способа сделать это, вы можете выбрать тот, который вам удобнее

Модель:

public function gender_count()
{
    $response = array();
//for female
    $this->db->select('count(id) as ftotal');//id should be primary key
    $this->db->from('personaldata');
    $this->db->where('gender','f');
    $this->db->group_by('gender');
    $query = $this->db->get();
    if ($query->num_rows() > 0) {
        $response['f'] = $query->row('ftotal');
    }else{
        $response['f'] = 0;
    }
//for male
    $this->db->select('count(id) as mtotal');//id should be primary key
    $this->db->from('personaldata');
    $this->db->where('gender','m');
    $this->db->group_by('gender');
    $query = $this->db->get();
    if ($query->num_rows() > 0) {
        $response['m'] = $query->row('mtotal');
    }else{
        $response['m'] = 0;
    }
    return $response;//assosiative array
}

ИЛИ

public function gender_count()
{
    $response = array();
    $this->db->select('gender,count(id) as total');//id should be primary key
    $this->db->from('personaldata');
    $this->db->group_by('gender');
    $query = $this->db->get();
    if ($query->num_rows() > 0) {
        foreach($query->result() as $row){
          $response[$row->gender] = $row->total;
        }
    }else{
        $response['f'] = 0;
        $response['m'] = 0;
    }
    return $response;//assosiative array
}

Контроллер:

$data = array();
$genderCount = $this->Gender_model->gender_count();
$data['fcount'] = $genderCount['f'];
$data['mcount'] = $genderCount['m'];
$this->load->view('genderCount',$data);

Вид:

<span>Female:</span><b><?php echo $fcount;?></b>
<span>Male:</span><b><?php echo $mcount;?></b>
0 голосов
/ 30 апреля 2019

Вы можете использовать функцию ниже в вашей модели и вызывать ее из контроллера.

Модель

public function gender_count()
{
    $this->db->select('gender, COUNT(*) as total');
    $this->db->group_by('gender'); 
    $query = $this->db->get('users', 10)->result();

    return $query;
}

Контроллер

public function index()
{
    $this->load->database();
    $this->load->model('User');

    $result = $this->User->gender_count();

    echo '<pre>';
    print_r($result);
    die;
}

Примечание: Я использую свою модельимя и имя таблицы в качестве примера, поэтому вам нужно использовать имя вашей модели и имя таблицы.

Надеюсь, это сработает для вас.

0 голосов
/ 30 апреля 2019

Вы можете получить общее значение пола по Count (*) и отправить это значение из @ OutputValue

Declare  @OutputValue int
select @OutputValue=COUNT(*) from personaldata
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...