1

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

在此处输入图像描述

但表格似乎没有标准化。我想要类似的东西。

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;
        }
    }

最好的方法是什么?

4

2 回答 2

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 前往许多推荐书

于 2013-02-01T21:05:48.520 回答
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;

现在你可以调用函数 add
选择时你可以选择状态

SELECT * FROM testimonial WHERE status = 0

或者

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;   

现在调用你的 add 函数

于 2013-02-01T19:29:30.090 回答