我在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);
}
然后我把那个私有函数调用到我的公共函数中,用以获取表中的数据:
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((时仍然出错,我该怎么办?
对我来说,您似乎忘记了函数get_data_query中的$this。函数体中没有$battery_consumption数组。而且你也没有在那里放一个函数关键字,我的PHP IDE在没有运行任何东西的情况下也会在上面标记错误。