Symfony 使用FOSUserBunde归档用户

Symfony 使用FOSUserBunde归档用户,symfony,fosuserbundle,Symfony,Fosuserbundle,我必须归档我的用户。我向用户实体添加了一列以将其设置为已存档。但我在使用这种方法时遇到了一些问题。我的用户名在存档用户和未存档用户之间可以相同,电子邮件也是一样。 第一个问题:如何防止电子邮件和用户名出现违反唯一约束的错误? 第二个问题:如何在功能中只检查FOS而不是存档用户 您可以在存档用户的姓名和电子邮件中添加前缀。前任: 已存档。%id%。。或者把他们移到另一张桌子上 扩展UserManager类并重写选择用户的方法 namespace MyFOSUserBundle; class Us

我必须归档我的用户。我向用户实体添加了一列以将其设置为已存档。但我在使用这种方法时遇到了一些问题。我的用户名在存档用户和未存档用户之间可以相同,电子邮件也是一样。 第一个问题:如何防止电子邮件和用户名出现违反唯一约束的错误? 第二个问题:如何在功能中只检查FOS而不是存档用户

  • 您可以在存档用户的姓名和电子邮件中添加前缀。前任:
    已存档。%id%。
    。或者把他们移到另一张桌子上
  • 扩展
    UserManager
    类并重写选择用户的方法

    namespace MyFOSUserBundle;
    
    class UserManager extends \FOS\UserBundle\Doctrine\UserManager
    {
        public function findUserBy(array $criteria)
        {
            $criteria['archived'] = 0;
            return $this->getRepository()->findOneBy($criteria);
        }
    
        public function findUsers()
        {
            return $this->getRepository()->findBy(array('archived' => 0));
        }
    }
    
    FOSUserBundle
    参数中将此类设置为
    UserManager

    services:
        my_fos_user.user_manager:
            class: MyFOSUserBundle\UserManager
            arguments:
                - "@fos_user.util.password_updater"
                - "@fos_user.util.canonical_fields_updater"
                - "@fos_user.object_manager"
                - "%fos_user.model.user.class%"
    
    fos_user:
        service:
            user_manager: my_fos_user.user_manager