在CodeIgniter
我需要插入约会信息。现在的问题是每个约会可以有更多的服务相关联。因此,为了解决此问题,我认为创建一个预约多行,例如:
约会详情
服务:剪裁,颜色
如何看到有两个服务关联,所以在我的数据库中我会有两行这样的:
id| name | service
10 appointment cut
10 appointment | color
现在我的实现中没有剪切和颜色,而是有一个数字,因为我有另一个包含所有服务细节的表。这是我的代码,允许我在我的表中插入约会:
$appuntamento = $appointment;
unset($appuntamento['id_services']);
foreach($appointment['id_services'] as $id)
{
$appuntamento['id_services'] = $id;
if(!$this->db->insert('ea_appointments', $appuntamento))
{
throw new Exception('Error.');
}
$insert_id = intval($this->db->insert_id());
}
return $insert_id;
在这个函数中,我传递了参数appointment
,我克隆了appuntamento对象中的appointment
对象,因为我需要遍历appointment
中可用的每个服务。
事实上,表中的同一日期应该有多少行,因为相关的服务数量是多少?我正在执行id_services
'的未设置,因为它是一个数组,正如我所说,我需要为每个相关服务插入相同的约会。
所以在foreach中我设置了我的appuntamento变量的索引id_services
。所以我插入了对象,结构是这样的:
INSERT INTO `ea_appointments` (`id_users_provider`, `start_datetime`, `end_datetime`,
`notes`, `is_unavailable`, `id_users_customer`, `book_datetime`, `hash`, `id_services`)
VALUES ('85', '2015-11-14 22:00:00', '2015-11-14 22:00:00', '', 0, '87',
'2015-11-14 12:00:33', '7a7e195d47b22cfd795f1876b3d2711b', '15')
但是我收到了这个错误:
键'PRIMARY'重复输入'0'
在我的数据库表中,我取消设置auto_increment
'原因如果我设置了auto_increment,我将在具有不同id的多行中获得相同的约会信息,这是错误的。
在最后一个代码行中,无论如何,我正在尝试返回插入约会的id。
那么,我做错了什么?
答案 0 :(得分:2)
在我的数据库表格中,我设置了auto_increment'如果我设置了 auto_increment我将获得相同的约会信息 多行具有不同的id,这是错误的。
试试这个:让你的id自动增加。然后添加一个单独的字段来保存约会ID。
答案 1 :(得分:0)
你有"重复录入' 0'"因为你没有为ea_appointments.id
自动增量。
您可以为ea_appointments.id
添加自动增量。
插入后,您可以使用带有$this->db->insert_id()
的插入记录的ID(例如,使用PDO::lastInsertId)插入关联的表格。
答案 2 :(得分:0)
制作两个主表 1 GT; mstr_appointment:此表包含约会详细信息。 2 - ; mstr_services:这包含有关不同服务的详细信息。
然后创建1个参考表 appointment_service:这包含有关哪个约会包含哪些服务的详细信息。
前:
1> mstr_appointment
3> appointment_service(参考表) - id(主键,自动增量) - id_users_provider(foreign key => mstr_appointment) - service_id(外键=> mstr_services)
ex of 3 tables with dataentry 根据表设计写入插入查询。只需要插入约会和服务的ID。 虽然获取记录需要编写简单的连接。 简单...!