Как сделать запрос select_sum в приватной переменной - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть личная переменная в codeigniter, например:

private $table = 'phone';
private $column_order = array(null, 'name', 'price');
private $type = array('type');
private $battery_consumption = array('battery_consumption');

И я хочу использовать свою переменную в своей частной модели:

private get_data_query(){
   $this->db->select($this->column_order);
   $this->db->select_sum($this->battery_consumption);
   $this->db->from($this->table);
   $this->db->group_by($this->type);
}

И затем я вызываю эту частную функцию в свой Функция publi c для извлечения моих данных из таблицы:

function get_datatables(){
   $this->_get_data_query();
   if($_POST['length'] != -1)
   $this->db->limit($_POST['length'], $_POST['start']);
   $query = $this->db->get();
   return $query->result();
}

function count_filtered()
{
    $this->_get_data_query();
    $query = $this->db->get();
    return $query->num_rows();
}

public function count_all()
{
    $this->db->from($this->table);
    return $this->db->count_all_results();
}

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

public function get_data_phone()
{
    $list = $this->m_phone->get_datatables();
    $data = array();
    $no = $_POST['start'];

    foreach ($list as $field) {
        $row[] = $no;
        $row[] = $field->name;
        $row[] = $field->type;
        $row[] = $field->price;
        $row[] = $field->battery_consumption;
        $data[] = $row;
    }

    $output = array(
        "draw" => $_POST['draw'],
        "recordsTotal" => $this->m_request->count_all(),
        "recordsFiltered" => $this->m_request->count_filtered(),
        "data" => $data,
    );
    echo json_encode($output);
}

В представлении:

<div class="card-block">
    <div class="dt-responsive table-responsive">
        <table id="phone" class="ui celled table" style="width:100%">
            <thead>
                <tr>
                    <th>No</th>
                    <th>Phone Name</th>
                    <th>Phone Type</th>
                    <th>Phone Price</th>
                    <th>Battery Health</th>
                </tr>
            </thead>
        </table>
    </div>
</div>

Запрос данных:

let table;

$(document).ready(function() {
   phone_data();

   function phone_data() {
      table = $('#phone').DataTable({
      "processing": true,
      "serverSide": true,
      "order": [],

      "ajax": {
         "url": "<?= site_url('phone/get_data_phone') ?>",
         "type": "POST",
      },

      "columnDefs": [{
         "targets": [0],
         "orderable": false,
      }, ],
    });  
   }
});

Но My Query в модели все еще выдает ошибку при использовании select_sum (), что мне делать?

1 Ответ

1 голос
/ 22 февраля 2020

Мне кажется, вы забыли $ this в функции get_data_query. В теле функции нет массива $ battery_consump. И вы также не поместили здесь ключевое слово function, моя PHP IDE помечает ошибки на этом даже без запуска.

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