我有一张名为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;
}
}
最好的方法是什么?
答案 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;
现在调用你的添加功能