symfony创建缺少唯一的实体

问题描述 投票:0回答:2

Symfony未将电子邮件字段标记为唯一。我可以在validation.yml中设置它,但不是一个好方法。任何人都知道为什么symfony没有将电子邮件字段标记为唯一?

我运行的命令是从现有db创建实体:

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;
php symfony symfony-2.1
2个回答
1
投票

您需要指定列必须包含如下所示的唯一值:

@ORM\Column(name="email", type="string", unique=true, length=255, nullable=false)
                                         ^^^^^^^^^^^

1
投票

@ORM \ Column(name =“username”,type =“string”,length = 25,unique = true)

© www.soinside.com 2019 - 2024. All rights reserved.