SQLSTATE [23000]:违反完整性约束:1062 Symfony 4中的条目重复

时间:2019-04-23 09:54:43

标签: php database symfony error-handling doctrine

我有一个名为“ student_assignment”的表,其中有多个列,下面从其中显示其中两个:

这两个列也是外键。

StudentId   assignmentId
    1           6          -> allowed
    2           3          -> allowed
    3           1          -> allowed
    2           3          -> not allowed, the combination of 2 3 already exists in table.

我已经成功地将这两列组合在一起。

我正在使用多项选择功能来向多个学生分配作业,例如“ 3号作业”。这些学生已经具有作业3 ,无法重新分配。 当我两次给学生分配“ 习题3 ”时,会抛出错误:

错误:

  

SQLSTATE [23000]:违反完整性约束:1062重复的条目   键“ assignment_unique”为“ 2-3”

我想要一个解决方案,可以分配那些没有第三次作业的学生,​​而那些没有这些作业的学生应该被忽略。

2 个答案:

答案 0 :(得分:0)

正如@Shady在评论中所说,您应该使用UniqueEntity约束。您可以在多个字段和组合上使用它。例如,在您的情况下,您应该这样使用它:

<constraint name="Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity">
    <option name="fields">
        <value>fieldOne</value>
        <value>fieldTwo</value>
    </option>
</constraint>

注意:第一个字段将显示错误(如果有)。

答案 1 :(得分:0)

我想您从数据库中获取这些数据作为 ArrayCollection 对象。我建议您在将2添加到数据库之前,确保2不与2关联。如果可能,我建议您检查一下您的模型(您的实体之间的关系)。