【问题标题】:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry in Symfony 4SQLSTATE [23000]:完整性约束违规:1062 Symfony 4 中的重复条目
【发布时间】:2019-09-12 11:36:42
【问题描述】:

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

这两列也是外键。

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

我已经成功组合了这两列。

我正在使用多项选择将作业分配给多个学生,例如“Assignment no 3”。这些学生已经有作业 3,无法重新分配。 当我为学生重新分配“Assigment 3”两次时,它会抛出错误:

错误:

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

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

【问题讨论】:

  • 看看UniqueEntity约束documentation
  • @Shady:我有,但感谢您的建议。
  • @Saurabh,你在看那个东西时遇到了什么问题?

标签: php database symfony error-handling doctrine


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-23
      • 2016-01-16
      • 2014-09-16
      • 2020-12-20
      • 1970-01-01
      • 2018-06-06
      • 2016-03-10
      • 2015-03-31
      相关资源
      最近更新 更多