在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对象,而我试图表达为字符串,
有没有办法让我如何实现这个目标,
我的意思是根据表名提取字段名称;
答案 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;
}