Symfony3 — @UniqueEntity не работает

Я не могу найти способ справиться с ошибкой базы данных, когда намереваюсь сохранить данные @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(),
]);

1

Решение

У меня была та же проблема, что и у вас, я изменил свой код с:

/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
* @UniqueEntity(fields={"username", "email"}, message="This value is already taken")
*/

чтобы:

/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
* @UniqueEntity(fields={"username"}, message="This username is already taken")
* @UniqueEntity(fields={"email"}, message="This email is already taken")
*/

Странно, но у меня это сработало. Просто дай мне знак, если я помог тебе.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]