cakephp中的完整性约束违规

时间:2014-03-29 05:35:04

标签: cakephp

我创建了具有复合主键的表,但是编辑时在cakephp中给出了完整性约束违规错误。

  

完整性约束违规:1062保存模型

的复合主键数据时重复输入

1 个答案:

答案 0 :(得分:1)

完整性约束违规意味着您尝试在数据库中保存Unique值的副本。主键必须是唯一的。

您的数据库中的主键字段是否设置为自动递增?如果你不这样做,那可能是你的问题。

否则,当您插入记录时,它可能会插入PK为0的行。然后当它尝试插入另一条记录时,它会尝试插入PK为0的另一行,因此不会是唯一的,并且违反了诚信约束。

<强>然而

您提到您正在进行编辑。如果您正在进行编辑,那么在将其保存到数据库时,您不会传递已编辑的行主键,因此蛋糕会尝试执行CREATE,从而导致另一个重复的行ID。

确保执行此操作:

$this->Model->id = $id; // Where $id is the Primary Key of the row being edited.

相反,你也可以这样做:

$data['Model']['id'] = $id;
$this->Model->save($data);

您可以通过将$ id存储在编辑表单中的隐藏字段或作为传递给操作的URL参数来捕获$ id。