使用ORM异常在注册时显示“username is taken”错误消息

时间:2016-08-31 09:24:25

标签: php symfony exception-handling doctrine

在使用用户名时,我对如何处理注册情况感到困惑。我有两个解决方案:

  1. 尝试保留新用户,抓住UniqueConstraintViolationException并显示错误消息。
  2. 执行将检查用户名是否存在的SQL查询,如果存在,则不执行持久查询,只显示错误消息。
  3. 第二种解决方案似乎更合适,但它会执行额外的查询,因此我会对性能产生影响(这不是什么大问题,因为它的注册因此每个用户只执行一次)。

    我最怀疑,因为第二个解决方案需要更多的代码才能编写第一个 - 每个人都知道更少的代码更好。

1 个答案:

答案 0 :(得分:0)

您不应使用数据库约束来检查自己的业务需求。我强烈建议您创建自己的“唯一约束”并使用其余的表单验证(如用户名长度,密码强度等)进行检查。

遵循伟大的原则“不要重新发明轮子”,我建议检查众所周知的捆绑包:

  1. Symfony Constraints - 有关使用约束的文档
  2. FOS User Bundle - 伟大的捆绑包,提供功能用户系统
相关问题