CodeIniter 中键“PRIMARY”的重复条目“0”

Dil*_*ger 0 php sql codeigniter

CodeIgniter需要插入预约信息。现在的问题是每个预约都可能有更多的相关服务。因此,为了解决这个问题,我想为一个约会创建多行,例如:

预约详情

服务:剪裁,颜色

您如何看到有两个关联的服务,因此在我的数据库中我将​​有两行,如下所示:

id|    name     | service
10  appointment    cut
10  appointment |  color
Run Code Online (Sandbox Code Playgroud)

现在,我的实现中不再有剪切和颜色,而是有一个数字,因为我有另一个包含所有服务详细信息的表。这是我的代码,允许我在表中插入约会:

$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;
Run Code Online (Sandbox Code Playgroud)

在此函数中,我传递参数appointment,并在 appuntamento 对象中克隆该appointment对象,因为我需要循环遍历appointment.

事实上,表中是否应该有那么多相同日期的行,就像关联的服务数量一样?我正在执行取消设置,id_services因为它是一个数组,正如我所说,我需要为每个关联的服务插入相同的约会。

因此,在 foreach 中,我设置了id_servicesappuntamento 变量的索引。所以我插入对象,结构是这样的:

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')
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

密钥“PRIMARY”重复输入“0”

在我的数据库表中,我取消了设置,auto_increment因为如果我设置 auto_increment,我将在具有不同 id 的多行中获得相同的预约信息,这是错误的。

无论如何,在最后一行代码中,我试图返回插入约会的 id。

那么,我做错了什么?

car*_*lot 5

在我的数据库表中,我取消了 auto_increment 的设置,因为如果我设置了 auto_increment,我将在具有不同 id 的多行中获得相同的预约信息,这是错误的。

试试这个:让你的 id 自动递增。然后添加一个单独的字段来保存约会 ID。