Codeigniter Select_Sum возвращает «массив», а не числовое значение? - PullRequest
0 голосов
/ 14 июня 2011

Мне нужно было сложить все строки для результата. Используя select_sum следующим образом

Вот модель

    function Dues_Paid_Tot($date)
{
    $query = $this->db->select_sum('Dues_Paid', 'Dues_Paid_Tot');
    $query = $this->db->get('Membership');
    return $query->result();
}

Вот контроллер

    function Fiscal2()
{
$date = $this->input->post('Select_Date');
    if($query = $this->report_model->fiscal_list($date))
    {
        $data['records'] = $query;
    }
$data['date'] = $this->input->post('Select_Date');
$data['Dues_Paid_Tot'] = $this->report_model->Dues_Paid_Tot($date);
$data['main_content'] = 'report_fiscal_view';
$this->load->view('includes/template', $data);
}

И это соответствующий код для представления

<?php echo $Dues_Paid_Tot; ?>

Проблема в том, что вместо суммирования всех записей в столбце Dues_Paid я вижу "Массив" в моем представлении.

Куда я иду не так?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 14 июня 2011

Это все еще запрос, поэтому вам все еще нужно обработать результат, попробуйте изменить модель на эту ...

function Dues_Paid_Tot($date)
{
    $query = $this->db->select_sum('Dues_Paid', 'Dues_Paid_Tot');
    $query = $this->db->get('Membership');
    $result = $query->result();

    return $result[0]->Dues_Paid_Tot;
}
1 голос
/ 14 июня 2011
function Dues_Paid_Tot($date)
{
    $query = $this->db->select_sum('Dues_Paid', 'Dues_Paid_Tot');
    $query = $this->db->get('Membership');
    return $query->result();
}

return $query->result();

Эта функция возвращает результат запроса как массив объектов, или пустой массив при ошибке.

Для получения дополнительной информации см. http://codeigniter.com/user_guide/database/results.html

1 голос
/ 14 июня 2011

Вы не делаете ничего плохого, просто так работает CodeIgniter. Из руководства result():

Эта функция возвращает результат запроса в виде массива объектов или пустого массива при ошибке.

Таким образом, информация, которую вы ищете, содержится в объекте в первом элементе массива.

Если вы сделаете var_dum($data['Dues_Paid_Tot']);, вы увидите, как вы можете получить доступ к своему значению, вероятно, это будет что-то вроде:

$data['Dues_Paid_Tot'][0]->some_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...