Sé que siempre puedo establecer una única clave de base de datos utilizando el esquema MYSQL. Sin embargo, era curioso si la doctrina de ORM le permitía configurar una columna para que fuera única en el código.¿Hay alguna manera de aplicar una columna única usando doctrine2?
Por ejemplo, ¿cómo puedo hacerlo en código para que los nombres de usuario sean únicos en el código en tiempo de ejecución?
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(300) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(300) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(300) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
function insert_user($username,$email,$password)
{
$user = new User();
$user->setUsername($username); //HOW CAN I MAKE THIS UNIQUE IN CODE?
$user->setEmail($email);
$user->setPassword($password);
try {
//save to database
$this->em->persist($user);
$this->em->flush();
}
catch(Exception $err){
die($err->getMessage());
return false;
}
return true;
}
Agregue el código como lo pidió – jini
Es el esquema de la tabla que necesita cambiar, consulte la documentación que he vinculado ... uniqueConstraints = {@ UniqueConstraint (name = "myname ", columns = {" username "}) probablemente sería lo que desea agregar en su caso. – Andreas
esta es una mejor respuesta, ya que funciona en más circunstancias – Dennis