学说手册说:
Doctrine does not quote identifiers automatically because this leads
to more problems,than it would solve.
引用一切究竟是什么问题?
解决方法
该引用来自
Basic Mapping部分的旧版本文档.最新文档不再包含此文本,但仍然如此.
最新文档的Limitations and Known Issues部分对此有所了解:
For compatibility reasons between all the supported vendors and edge case problems Doctrine 2 does NOT do automatic identifier quoting.
由于不同sql供应商使用不同的引用策略,以及ORM生成sql的方式,因此很难找到适用于所有情况的解决方案.而且它更难维护.这可能不是不可能的,但是Doctrine团队认为不值得花时间,并且(或许更重要的是)代码复杂性.
有关sql生成复杂程度的提示,请浏览git repository中的代码.
通常的最佳做法是仅对标识符使用字母数字字符(和下划线),并且不使用保留关键字.如果您遵循这些,您将不需要标识符引用.
如果您确实需要,因为您处理遗留数据库,Doctrine提供了两种解决方案:
>手动引用标识符,请参阅Basic Mapping部分.
>创建遵循前面提到的最佳实践的数据库视图.
PS:对于那些不知道的人:“标识符”不是指主键,而是指表,列,索引等的名称.