【问题标题】:Helper function used with Ignited-Datatables do not execute Query与 Ignite-Datatables 一起使用的辅助函数不执行查询
【发布时间】:2026-02-16 00:35:02
【问题描述】:

我被困在在 codeigniter 中向 Ignited-Datatables 添加列。这是我尝试过的:

生成数据表的模型函数

$this->datatables->select('id,status')
->unset_column('id')
->add_column('addinfoqty',get_addinfoqty('$1'),'id')
->from('crm_listings');

return $this->datatables->generate();

现在我创建了辅助函数 get_addinfoqty 来从数据库返回值

这是我的辅助函数

    function get_addinfoqty($id)
    {
    $CI = & get_instance();
    $qry = "select id from crm_listings where id='$id'";
    $query = $CI->db->query($qry);
    $cnt = 0;
    foreach ($query->result_array() as $row)
    {
       $cnt= 1;
    }
    $html = '.$cnt.';
    return $html;
}

如何执行此查询以返回 id 是否存在?它总是返回 0; 注意:当我返回 $qry 时,它会给出正确的查询,但我无法运行它来获取它的值。

【问题讨论】:

  • 我也被这种问题困扰。你得到解决方案了吗?

标签: database codeigniter helper


【解决方案1】:

将您的代码更改为:

$this->datatables->select('id,status')
->add_column('addinfoqty','$1',get_addinfoqty('id'))
->from('crm_listings');

echo  $this->datatables->generate();

【讨论】:

    【解决方案2】:

    查看我自己的代码

    这是我的辅助方法

    if (! function_exists('human_filesize')) {
        function human_filesize($bytes, $decimals = 2)
        {
            // var_dump($bytes);die;
            $bytes = (float) $bytes; 
            $sz = 'BKMGTP';
            $factor = floor((strlen($bytes) - 1) / 3);
            return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor];
        }
    }
    

    在点燃的数据表中

    $this->load->library('datatables');
            $this->datatables->select("name, filename, filesize, created_at, url")
                                ->from('sma_documents')
                                ->add_column("Actions", base_url('$1'), "url");
            $this->datatables->edit_column("filesize", '$1', "human_filesize('filesize')");
            echo $this->datatables->generate();
    

    应该使用“”(引号)

    所以在你的代码中应该是

    $this->datatables->select('id,status')
    ->add_column('addinfoqty','$1',"get_addinfoqty('id')")
    ->from('crm_listings');
    
    echo  $this->datatables->generate();
    

    【讨论】: