【发布时间】:2013-01-02 19:10:45
【问题描述】:
Symfony 没有将电子邮件字段标记为唯一。我可以在validation.yml 中设置它,但不是一个好方法。有人知道为什么 symfony 没有将电子邮件字段标记为唯一吗?
我为从现有数据库创建实体而运行的命令:
php app/console doctrine:mapping:convert xml ./src/Frontend/AccountBundle/Resources/config/doctrine/metadata/orm --from-database --force
php app/console doctrine:mapping:import FrontendAccountBundle annotation
php app/console doctrine:generate:entities FrontendAccountBundle
我的桌子:
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=22 ;
在 config/...../User.orm.xml:
<field name="email" type="string" column="email" length="255" nullable="false"/>
在Entity/User.php中
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=255, nullable=false)
*/
private $email;
【问题讨论】:
-
我认为因为电子邮件字段并不总是必须是唯一的。这取决于你。
-
谢谢,但是在sql中它只是varchar 255。在User.php中输入这个字段也是唯一的没有意义,因为当我执行命令时,它将被覆盖。看看我对第一个答案的命令。
-
只需使用
uniqueConstraint将所需字段描述为唯一的。有关详细信息,请参阅此链接:docs.doctrine-project.org/en/2.0.x/reference/…。
标签: php symfony symfony-2.1