2013-02-01 46 views
1

我有一个名为testimonial的表。表结构如下。codeigniter插入到多个表中

enter image description here

但表似乎没有标准化。我想喜欢的东西。

trip_testimonial

----------------------------------- 
id 
trip_id 
status 
----------------------------------- 

而另一台为

告别赛

---------------------------------- 
    id 
    name 
    email 
    website 
    message 
    ----------------------------------- 

但我怎么在笨将数据输入到他们。我已经使用了类似

function add($data){ 

     $this->db->insert('testimonials', $data); 
     if($this->db->affected_rows()>0){ 
      return TRUE; 
     }else{ 
      return FALSE; 
     } 
    } 

什么是最好的方法?

+0

你的问题还不清楚。你想插入多个表吗?在trip_testimonial什么是状态? –

+0

该状态仅仅是证书的状态,可以有1个为批准或0为待定证明 – prakashchhetri

+1

好告诉我可以单个证明有多次旅行吗? –

回答

2
[TRIP] 
trip_id 
trip_name 
trip_desc 
.... 

[TESTIMONIAL] 
testimonial_id 
trip_id 
testim_name 
testim_email 
...... 

function add($data){ 

    $dataTrip = array(
    //fill the array the appropriate data 
); 

    //return the last inserted trip_id 
    $lastTripId = $this->myModel->myFuncToAddTrip($dataTrip);  

    $dataTestimonial = array(
    'trip_id' => $lastTripId, 
    'testim_name' => $data['testim_name'], 
    ....... 
); 

    if($this->myModel->myFuncAddTestimonial($dataTestimonial)){ 
    //success 
    }else{ 
    //error 
    } 

} 

如果至少有一个查询失败,则使用事务回滚。

编辑 1一趟许多见证

1

你的结构是标准化的一对一的关系只是删除trip_id列

testimonial 
----------------------------------- 
id 
name 
email 
website 
message 
date 
status 

你的附加功能是好的

function add($data){ 

    $this->db->insert('testimonials', $data); 
    if($this->db->affected_rows()>0){ 
     return TRUE; 
    }else{ 
     return FALSE; 
    } 
} 

而且要插入的数据

$data['name']  = 'blah'; 
$data['email']  = '[email protected]'; 
$data['website'] = 'website'; 
$data['message'] = 'message'; 
$data['date']  = date('Y-m-d H:i:s'); 

并在创建表或ALTER时将状态的默认值设置为0。
但是,当你需要插入时,你可以添加一个具有不同值的列。

$data['status']  = 1; 

现在你可以调用函数中添加
当选择你可以用状态

SELECT * FROM testimonial WHERE status = 0 

OR

SELECT * FROM testimonial WHERE status = 1 

更新选择:

如果这是比的情况下你可以这样做。 一列添加到推荐表

testimonial 
----------------------------------- 
id 
name 
email 
website 
message 
date 
status 
trip_id 

现在选择线路编号

SELECT id FROM trip_testimonial WHERE status = 0 

并且返回的标识应告别赛数据

$data['name']  = 'blah'; 
$data['email']  = '[email protected]'; 
$data['website'] = 'website'; 
$data['message'] = 'message'; 
$data['date']  = date('Y-m-d H:i:s'); 
$data['trip_id'] = $row->id; 

现在可以把调用你的附加功能

+0

不,一次旅行可以有多次推荐,所以trip_id是trip_testimonials – prakashchhetri

+0

中的外键,这与我发布的完全相同。但是我想要的是按照我在问题中陈述的标准化表并将数据插入到两个表中,一个在codeigniter中] – prakashchhetri