我可以将codeigniter模型函数称为表吗?

时间:2016-11-24 10:09:22

标签: php mysql codeigniter datatables

我花了一整天才发现,如何使我的代码更酷。我只是好奇,我可以将Codeigniter模型函数称为表吗?这是codeigniter与我的小自定义服务器端数据表。

我的模特:M_global

private function _get_datatables_query($table, $column_order, $column_search, $order) {
    $this->db->from($table);
    $i = 0;
    foreach ($column_search as $item) {
        if($_POST['search']['value']) {
            if($i===0) {
                $this->db->group_start();
                $this->db->like($item, $_POST['search']['value']);
            } else {
                $this->db->or_like($item, $_POST['search']['value']);
            }

            if(count($column_search) - 1 == $i)
                $this->db->group_end();
        }
        $i++;
    }

    if(isset($_POST['order'])) {
        $this->db->order_by($column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
    } else if(isset($order)) {
        $order = $order;
        $this->db->order_by(key($order), $order[key($order)]);
    }
}

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

function count_filtered($table, $column_order, $column_search, $order)
{
    $this->_get_datatables_query($table, $column_order, $column_search, $order);
    $query = $this->db->get();
    return $query->num_rows();
}

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

// My query here
function sum_filter() {
    return $this->db->query("
            SELECT
            main.name,
            main.date_submit,
            main.id_claim,
            ifnull((SELECT SUM(amount) FROM v_t_office
                WHERE id_claim = main.id_claim), 0) as total_office,
            ifnull((SELECT SUM(amount) FROM v_t_misc
                WHERE id_claim = main.id_claim), 0) as total_misc,
            ifnull((
                (SELECT SUM(amount) FROM v_t_office
                    WHERE id_claim = main.id_claim) +
                (SELECT SUM(amount) FROM v_t_misc
                    WHERE id_claim = main.id_claim)
            ), 0) as total_expense
        FROM
            vc_submit main
        GROUP BY main.id_claim
    ")
}

我的控制人员:批准

这是我的问题,我无法使用,在$ table

public function show_approve() {
        $table          = $this->M_global->sum_filter(); //Here
        // $table       = 'v_transaction';
        $column_order   = array(null, 'name','date_submit','total_office','total_misc','total_expense',null); 
        $column_search  = array('name','date_submit','total_office','total_misc','total_expense'); 
        $order          = array('name' => 'asc'); 

        $list           = $this->M_global->get_datatables($table, $column_order, $column_search, $order);
        $data           = array();
        $no             = $_POST['start'];
        foreach ($list as $l) {
            $no++;
            $row = array();
            $row[] = $no;
            $row[] = $l->name;
            $row[] = date('d-m-Y', strtotime($l->date_submit));
            $row[] = $l->total_office;
            $row[] = $l->total_misc;
            $row[] = $l->total_expense;
            $row[] = '';

            $data[] = $row;
        }

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

我无法使用

$ table = $ this-> M_global-> sum_filter();

ajax响应说" strpos()期望参数1是字符串,对象给定"。我究竟做错了什么?或者它只是不能。换句话说,我使用的是由sum_filter()查询生成的v_transaction表。

0 个答案:

没有答案
相关问题