que tienen la siguiente clase de entidad en mi solicitud:¿Por qué mi restricción Symfony2 @UniqueEntity no funciona en absoluto?
<?php
namespace ...;
// use ...
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;;
// ...
/**
* @ORM\Table(name="sc_user")
* @ORM\Entity(repositoryClass="...\UserRepository")
* @ORM\HasLifecycleCallbacks()
* @UniqueEntity(fields={"email", "username"})
*/
class User implements UserInterface, \Serializable, EquatableInterface
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $email
*
* @ORM\Column(name="email", type="string", length=255, unique=true)
*
* @Assert\NotBlank(groups={"registration"})
* @Assert\Email(groups={"registration"})
*/
private $email;
/**
* @var string $username
*
* @ORM\Column(name="username", type="string", length=32, unique=true)
*
* @Assert\NotBlank(groups={"registration"})
*/
private $username;
// ...
}
La restricción @UniqueEntity está siendo ignorada. Probé diferentes sabores que incluyen:
@UniqueEntity(fields={"email", "username"})
y
@UniqueEntity(fields={"email"})
@UniqueEntity(fields={"username"})
y, según la documentación de Symfony2 aquí: http://symfony.com/doc/current/reference/constraints/UniqueEntity.html
@UniqueEntity("email")
@UniqueEntity("username")
Nada de lo que hago, funciona. En lugar de obtener un error de validación de formularios como se esperaba, me estoy haciendo la siguiente excepción:
SQLSTATE [23000]: violación de integridad: 1062 Entrada duplicada '[email protected]' para la llave 'UNIQ_D8183973E7927C74'
¡Esto simplemente está mal! ¿Alguien sabe cómo solucionar este problema?
1 gracias! eso funcionó un placer! – coder4show
Hola, Josef, parece una pregunta un poco vieja, pero estoy teniendo el mismo problema que tú, solo me preguntaba si era necesario, no sé, crear ese grupo de validación en alguna parte. Agregué el campo de entidad único exactamente como lo hizo, solo en el correo electrónico y el teléfono celular, pero todavía me da una excepción en lugar de un error de validación. ¿Algunas ideas? – iLikeBreakfast
@iLikeBreakfast usted necesita declarar el grupo de validación en su método 'setDefaultOptions' en su' FormType' – ferdynator