在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 对象,而我试图表达为一个字符串,
有没有办法让我做到这一点,
我的意思是根据表名获取字段名;