0

在codeigniter中,我正在为一些数据插入创建一个通用函数

为此我保持一些规范

假设我有两张表,一张是 dt_category,另一张是 dt_product

这是 dt_category 结构

|-------------------|---------------------|--------------------|------------------|
| category_id       | category_name       | category_slug      |  timestamp       |
|-------------------|---------------------|--------------------|------------------|

这是 dt_product 结构

|-------------------|---------------------|--------------------|------------------|
| product_id        |  product_name       |  product_slug      |  timestamp       |
|-------------------|---------------------|--------------------|------------------|

如您所见,两个表字段都只是通过字段名前缀更改,我的意思是在 dt_category 中它的 category_id

在 dt_product 它的 product_id 等等

现在在调用函数插入类别数据时,我使用这种方法

$category_name=$this->input->post('category_name');
               $insert_array=array('category_name'=>$category_name,
                                   'timestamp'=>time());
               $data['msg']=$this->erp_model->data_insert('dt_category',$insert_array);

对于产品数据,只需此方法

$product_name=$this->input->post('product_name');
               $insert_array=array('product_name'=>$product_name,
                                   'timestamp'=>time());
               $data['msg']=$this->erp_model->data_insert('dt_product',$insert_array);

处理插入的函数就是这个

function data_insert($table,$data)
    {
        $this->db->insert($table,$data);
        $timestamp=$data['timestamp'];
        $table_nm=explode('_',$table); //spliting the table name in format dt_table_name,
        $table_slug=$table_nm[1]."_"."slug";//if its dt_product table_nm[1]="product", 
                                            //if category,table_nm[1]="category"
                                            //thus $table_slug="product_slug" or "category_slug"
        $query = $this->db->select('*')
                        ->from($table)
                        ->where('timestamp', $timestamp)
                        ->get();
        foreach($query->result() as $r_q)
        {
            $id=$r_q->$table_nm[1].'_id';//i want $id value of product_id since $table_nm[1]="product"
            $name=$r_q->$table_nm[1].'_name';//i want $name value of product_name since $table_nm[1]="product"
        }
        echo $id."-".$name;


    }

在基于 table_name 的 aboce 函数中,我想获取字段名称的值

$id=$r_q->$table_nm[1].'_id'; should resemble $id=$r_q->product_id; if the table is dt_product

我知道我做错了,因为 ->product_id 是一个 resultanat 对象,而我试图表达为一个字符串,

有没有办法让我做到这一点,

我的意思是根据表名获取字段名;

4

1 回答 1

0

好的,我解决了我的问题,这是答案

我在检索时尝试连接,但现在我先做了,然后分配了字段

$tab_id=$table_nm[1].'_id';
            $tab_name=$table_nm[1].'_name';

这是解决的代码

function data_insert($table,$data)
        {
            $this->db->insert($table,$data);
            $timestamp=$data['timestamp'];
            $table_nm=explode('_',$table);
            $table_slug=$table_nm[1]."_"."slug";
            echo $table_slug;
            $query = $this->db->select('*')
                            ->from($table)
                            ->where('timestamp', $timestamp)
                            ->get();
            $tab_id=$table_nm[1].'_id';
            $tab_name=$table_nm[1].'_name';
            foreach($query->result() as $r_q)
            {
                $id=$r_q->$tab_id;
                $name=$r_q->$tab_name;
            }
            echo $id."-".$name;


        }
于 2013-03-27T15:22:05.677 回答