学说手册说:
Doctrine不会自动引用标识符,因为这会引导 比它解决的更多问题。
引用一切究竟有什么问题?
答案 0 :(得分:3)
此引用来自Basic Mapping部分下的旧版文档。最新文档不再包含此文本,但它仍然是。
最新文档的Limitations and Known Issues部分阐明了这一点:
出于兼容性原因,所有受支持的供应商和边缘案例问题之间,Doctrine 2 NOT 执行自动标识符引用。
由于不同SQL供应商使用不同的引用策略,以及ORM生成SQL的方式,因此很难找到适用于所有情况的解决方案。而且维护起来更难。这可能并非不可能,但是Doctrine团队认为不值得花时间,并且(或许更重要的是)代码复杂性,尝试。
有关SQL生成复杂程度的提示,请浏览git repository中的代码。
通常的最佳做法是仅对标识符使用字母数字字符(和下划线),并且不使用保留关键字。如果您遵循这些,则不需要标识符引用。
如果您确实需要,因为您处理遗留数据库,Doctrine提供了两种解决方案:
PS:对于那些不知道的人:“标识符”不是指主键,而是指表,列,索引等的名称。