codeigniter插入到多个表中

时间:2013-02-01 18:49:29

标签: php codeigniter

我有一张名为testimonial的表格。表结构如下。

enter image description here

但桌子似乎没有正常化。我想要一样的东西。

trip_testimonial

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

另一张表

个人鉴定

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

但是如何在codeigniter中将数据输入到它们中。我使用过像

这样的东西
function add($data){

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

最好的方法是什么?

2 个答案:

答案 0 :(得分: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次参观许多推荐书

答案 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']      =   'abc@test.com';
$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

现在选择旅行ID

    SELECT id FROM trip_testimonial WHERE status = 0

返回的id应该带有推荐数据

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

现在调用你的添加功能