【发布时间】:2018-07-04 17:54:45
【问题描述】:
当我打算保存我的数据库允许的@uniqueConstrainst 数据时,我找不到处理数据库错误的方法。 问题是我的@UniqueEntity 在数据库错误显示之前没有处理错误。
这是我的代码
* @ORM\Table(name="persona_idioma", uniqueConstraints={@UniqueConstraint(name="persona_idioma_unique",columns={"id_persona","id_idioma"})},indexes={@ORM\Index(name="IX_Relationship11", columns={"id_idioma"}), @ORM\Index(name="IX_Relationship12", columns={"id_persona"})})
* @ORM\Entity(repositoryClass="AppBundle\Repository\PersonaIdiomaRepository")
* @UniqueEntity(
* fields={"idPersona", "idIdioma"},
* errorPath = "idPersona",
* message="mensaje"
*
* )
更新:我刚刚添加了实体的列
/**
* @var \AppBundle\Entity\Persona
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Persona",inversedBy="idiomas")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="id_persona", referencedColumnName="id_persona")
* })
*/
private $idPersona;
/**
* @var \AppBundle\Entity\Idioma
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Idioma")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="id_idioma", referencedColumnName="id_idioma")
* })
*/
private $idIdioma;
以及实体所在的控制器
$formulario->handleRequest($request);
if ($formulario->isSubmitted() && $formulario->isValid()) {
$em->persist($persona);
$em->flush();
return $this->redirectToRoute('persona_edit', array('id_persona' => $persona->getIdPersona()));
}
return $this->render('persona/new_edit.html.twig', [
'formulario' => $formulario->createView(),
]);
【问题讨论】:
-
能否分享验证实体的代码?
-
我刚刚确实添加了列
-
我的意思是:您是否在持久化实体之前使用验证器来验证实体?
-
不,我该怎么做?
-
简单问题 - 添加
@UniqueEntity注释后,您是否清除了缓存? ;)
标签: php symfony unique unique-constraint