Php 如何覆盖Symfony2捆绑包中的实体

Php 如何覆盖Symfony2捆绑包中的实体,php,bundle,symfony,Php,Bundle,Symfony,我正在为Symfony2使用FOSUserBundle,我需要能够注册一个用户,而无需验证电子邮件是否唯一,我只需要一封有效的电子邮件,以便许多用户可以拥有相同的电子邮件(我知道这很奇怪,但我需要它) 我的捆绑包中有一个实体“User”,它扩展了FOSUserBundle,是否可以覆盖emailCanonical的列定义,以消除唯一参数并从FormType中删除验证 我正在使用注释映射实体,并使用YML验证表单。我发现了一些东西,这部分是一个解决方案,不可行 问题分为两部分:形式和模型 表格:

我正在为Symfony2使用FOSUserBundle,我需要能够注册一个用户,而无需验证电子邮件是否唯一,我只需要一封有效的电子邮件,以便许多用户可以拥有相同的电子邮件(我知道这很奇怪,但我需要它)

我的捆绑包中有一个实体“User”,它扩展了FOSUserBundle,是否可以覆盖emailCanonical的列定义,以消除唯一参数并从FormType中删除验证


我正在使用注释映射实体,并使用YML验证表单。

我发现了一些东西,这部分是一个解决方案,不可行

问题分为两部分:形式和模型

表格: 要覆盖FOSUserBundle注册表的唯一约束,您可以在app/config/config.yml中修改注册验证组:

fos_user:
  registration:
    validation_groups: [YourValidationGroup]
对于型号: 我没有找到一个不覆盖所有模型的好解决方案。Doctrine2明确告诉您不能覆盖映射类的属性。所以我做了一个迁移,用doctrinMigrationBundle删除唯一约束索引。。。我对这个解决方案并不感到自豪,但它很有效,它让我可以保存一封重复的电子邮件

如果您有更好的模型解决方案,请不要犹豫

我几周前有过。唯一的解决方案是扩展模型而不是实体:

use FOS\UserBundle\Model\User as BaseUser;

class User extends BaseUser

缺点是您还必须将FOS用户实体中的所有内容复制到您的用户实体。另一方面,您可以根据自己的需要调整功能。

FOS用户实体只包含:
抽象类用户扩展抽象用户{}
您的意思是,缺点是您还必须将FOS用户模型中的所有内容复制到您的用户模型中,然后让您的实体扩展新的用户模型吗?对不起,我想我一开始误解了这个问题。我遇到了需要创建更多自定义实体的情况。在我自己的bundle中,我创建了新的用户实体,它从FOSUserBundle扩展了
Model\User
,并覆盖了其中的所有方法和变量。然后我创建了属于不同验证组的新验证规则(通过同一实体中的注释)(如您在回答中所述)。我最初的问题是:。这和你问的问题并不完全一样,但它可以帮助你。