Я получаю ошибку неподдерживаемых типов операндов в codeigniter - PullRequest
0 голосов
/ 18 февраля 2019

Когда я пытаюсь добавить ссылки на страницы, я получаю Ошибка неподдерживаемых типов операндов

Вот мой код

Модель

public function getCategory($limit,$offset){

    $this->db->select("*");
    $this->db->from("tbl_category");
    $this->db->limit($limit,$offset);

    $row = $this->db->get()->result_array();

    return $row;
}

public function num_rows(){
    $this->db->select('*');
    $this->db->from('tbl_category');
    $row = $this->db->get()->result_array();
    return $row;
}

controller

public function category($script="list",$id=""){
    $data['script'] = $script;

    if($script == 'list'){

        $config = [
            'base_url' => base_url('http://localhost/training/admin/'),
            'per_page' => 2,
            'total_rows' => $this->admin_model->num_rows(),
        ];
        $this->pagination->initialize($config);
        $rows = $this->admin_model->getCategory($config['per_page'], $this->uri->segment(3));
        $data['rows'] = $rows;
    }

В моем файле View я делаю это для получения ссылок

<?php $this->pagination->create_links(); ?>

Я получаю ошибку, подобную приведенной ниже

Обнаружено необработанное исключение Тип: Ошибка

Сообщение: неподдерживаемые типы операндов

Имя файла: C: \ xampp \ htdocs \ training \ system \ library \ Pagination.php

Номер строки: 412

Backtrace:

Файл: C: \ xampp \ htdocs \ training \ application \ views \ category.php Строка: 101 Функция: create_links

Файл: C: \ xampp \ htdocs \ training \application \ controllers \ Admin.php Строка: 150 Функция: представление

Файл: C: \ xampp \ htdocs \ training \ index.php Строка: 315 Функция: require_once

Ответы [ 2 ]

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

Here is my code

 $mess_fees = $this->db->query("SELECT sum(t2.amount) as mess_fees FROM `mess_fee_head` as t1 JOIN mess_fee_detail as t2 ON t1.id=t2.mess_fee_head_id WHERE t1.batch=$student_batch_id AND t1.academic_year_id=$newstudent_acedemic_year_id AND t2.status='Y'")->result();
 $num=4;
 $mess_fee_amount=($mess_fees)/$num;
0 голосов
/ 18 февраля 2019

В функции Controller, когда вы получаете результаты, вы должны передать их в файл View, как показано ниже.

$data['rows'] = $rows;

// load the view
$this->load->view('category_view', $data);

Затем в вашем файле просмотра вы можете получить ссылки на страницы.

<?php echo $this->pagination->create_links(); ?>

РЕДАКТИРОВАТЬ => Здесь в массиве конфигурации 'total_rows' => $this->admin_model->num_rows(), вы назначаете массив вместо номера счета.

Функция вашей модели

public function num_rows(){
    $this->db->select('*');
    $this->db->from('tbl_category');
    $row = $this->db->get()->result_array();
    return $row; //This $row is an Array, NOT count no. of rows
}

В приведенной выше функции вы возвращаете return $row;, который является массивом.И это причина, по которой вы получаете ошибку, такую ​​как Ошибка неподдерживаемых типов операндов

Итак, 2 решения этой проблемы. Попробуйте только ЛЮБОЕ из решения.

Либо 1) Вы должны вернуть количество результирующего набора в переменную total_rows:

$config = [
            'base_url' => base_url('http://localhost/training/admin/'),
            'per_page' => 2,
            'total_rows' => count($this->admin_model->num_rows()), //Pass the count of returned array.
        ];

ИЛИ 2) Вы можете изменить функцию.

public function num_rows(){
    $this->db->select('*');
    $this->db->from('tbl_category');
    $row = $this->db->get()->result_array();
    return $row->num_rows(); //Return count result instead of array.
}

ПРИМЕЧАНИЕ: - Если вы хотите просто подсчитать количество строк, выможно использовать $ this-> db-> count_all_results () , как показано ниже.

public function num_rows(){
    $this->db->from('tbl_category');
    return $this->db->count_all_results();
}

num_rows () : - С num_rows () сначала вы выполняете запрос, а затем можете проверить, сколько строк вы получили. Полезно, когда вам нужны данные таблицы .

count_all_results () : - С помощью count_all_results () вы получите количество строк, которые ваш запрос произведет, но не дает вам фактический набор результатов. Полезно, когда вам нужно только количество строк для нумерации страниц, нет.записей и т. д.

См. мой другой ответ здесь. Запрос Codigniter, возвращающий неправильный счет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...