Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php symfony创建缺少唯一实体的实体_Php_Symfony_Symfony 2.1 - Fatal编程技术网

Php symfony创建缺少唯一实体的实体

Php symfony创建缺少唯一实体的实体,php,symfony,symfony-2.1,Php,Symfony,Symfony 2.1,Symfony未将电子邮件字段标记为唯一。我可以在validation.yml中设置它,但这不是一个好方法。有人知道为什么symfony没有将电子邮件字段标记为唯一的吗 我运行以从现有数据库创建实体的命令: php app/console doctrine:mapping:convert xml ./src/Frontend/AccountBundle/Resources/config/doctrine/metadata/orm --from-database --force php app/c

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"/>

您需要指定列必须包含以下唯一值:

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

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

Yes,但Entity/User.php&User.php是由这三个命令创建的。为什么symfony不通过这些命令创建unique=true?我的sql文件有什么问题吗?Doctrine从数据库的转换并不总是可靠的,而且必须是这种方式,因为各种数据库可能实现独特的约束。记住symfony2为你做了大量的事情,但它很少为你做所有的事情。好吧,所以现在它不是很好。这很愚蠢,因为我处于开发状态,经常更改sql文件。无论如何,我想还是谢谢你,因为电子邮件字段不一定总是唯一的。这取决于您。谢谢,但在sql中它只是varchar 255。在User.php中输入这个字段也是唯一的是没有意义的,因为当我执行命令时,它将被覆盖。请看我的命令,找到第一个答案。只需使用
uniqueConstraint
将所需字段描述为唯一字段。有关详细信息,请参阅此链接:。
@ORM\Column(name="email", type="string", unique=true, length=255, nullable=false)
                                         ^^^^^^^^^^^