Wiem, że zawsze mogę ustawić unikalny klucz DB, używając schematu MYSQL, ale byłam ciekawa, czy doktryna ORM pozwala ci ustawić kolumnę jako niepowtarzalną w kodzie?Czy istnieje sposób na wymuszenie unikatową kolumnę za pomocą doktryny2?
Na przykład, jak mogę zrobić to w kodzie, aby nazwa użytkownika była unikalna w kodzie w czasie wykonywania?
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;
}
Dodałem kod, o który prosiłeś. – jini
Jest to schemat tabeli, który musisz zmienić, spójrz na dokumentację, z którą połączyłem ... uniqueConstraints = {@ UniqueConstraint (name = "myname ", columns = {" username "}) będzie prawdopodobnie tym, co chcesz dodać w swojej sprawie. – Andreas
to jest lepsza odpowiedź, ponieważ działa w większej liczbie okoliczności – Dennis