类似于表字段作为Codeigniter中的一些别名

时间:2013-03-27 13:39:47

标签: codeigniter activerecord

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

为此我保留了一些规范

说我有两个表,一个是dt_category,另一个是dt_product

这是dt_category struture

|-------------------|---------------------|--------------------|------------------|
| 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对象,而我试图表达为字符串,

有没有办法让我如何实现这个目标,

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

1 个答案:

答案 0 :(得分: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;


        }