表名“user”应该在 Symfony 项目中使用吗?

use*_*531 1 postgresql doctrine symfony

我知道这听起来像是一个“意见”问题,但我认为事实并非如此。

通常,我会考虑不使用“user”作为表名,因为它是保留字,并且我宁愿在编写本机 SQL 查询时不必费心处理它。

但我不是在编写原生 SQL 查询,而是让 Symfony 和 Doctrine ORM 执行所有查询。当我执行时,Symfony 提示我选择作为表名的php bin/console make:user类名。此外,我读过的大多数教程也使用用户名。如果使用用户名对于其他开发人员来说是最常见的,我宁愿保持一致。Useruser

大多数时候,我没有任何问题,但 Doctrine 时不时会崩溃,因为它正在查询 Postgres 内部user表而不是public.user. 作为解决方法,我尝试添加 * @ORM\Table(schema="public")到用户实体,但在进行迁移时,它尝试复制记录,从而导致错误。也许 Symfony/Doctrine 需要在某个地方配置为使用公共模式?

谢谢

use*_*531 5

由于我的问题是“表名 \xe2\x80\x9cuser\xe2\x80\x9d 应该在 Symfony 项目中使用吗?”,以下内容没有回答问题,但我仍然发布它应该有帮助为他人。也许我会将标题改为“如何在 Doctrine 项目中使用表名 \xe2\x80\x9cuser\xe2\x80\x9d?”,但不确定这样做是否符合犹太教规。

\n

此后我发现其他人也遇到了由该主题引起的问题:

\n\n

还发现以下内容在doctrine-adding-mapping中:

\n
\n

请注意不要使用保留的 SQL 关键字作为表或列\n名称(例如 GROUP 或 USER)。有关如何转义这些关键字的详细信息,请参阅 Doctrine\xe2\x80\x99s 保留 SQL 关键字\n文档。或者,使用类上方的 @ORM\\Table(name="groups") 更改表\n名称,或使用 name="group_name" 选项配置\n列名称。

\n
\n

这引导我引用保留字,这引导我使用刻度来转义名称。

\n
  * @ORM\\Table(name="`user`")\n
Run Code Online (Sandbox Code Playgroud)\n