使用Doctrine ORM时是否存在命名表的约定?我喜欢用复数命名表,但如果有一个约定,我想坚持下去。
因此表'users'将与使用fk作为单数('user_id')的表相关。
是否有最佳实践(使用单数或复数表名),如果是后者,这是如何适用于复数不是添加's'的简单情况的表。
例如,我目前有一个名为'categorys'而不是'categories'的表来维持添加's'的惯例。
这是一种明智的做法吗?
答案 0 :(得分:6)
在使用我自己的基本ORM时,我曾经使用过多个表名,但是当我开始使用symfony + Propel和现在的一些Doctrine时,我切换到了单数表名。这样做的原因是类名,因为您要创建用户而不是用户。
使用Doctrine,当谈到集合或关系时,你要告诉它别名应该是什么:
http://www.doctrine-project.org/projects/orm/1.2/docs/manual/working-with-models/en
您会看到用户可以有多个 Phonenumber ,因此在YAML架构中设置了 foreignAlias ,因此它将是 > Phonenumbers 通过 $ user-> Phonenumbers 有效访问。
在您的示例中,您将 foreignAlias 设置为 Categories ,同时保留名为 Category 的表和记录。
答案 1 :(得分:2)
Doctrine约定是对表和模型使用单数名称,正如第一个回答者所解释的那样,因为逻辑上你需要像以下方法:
$user->Phonenumbers
...而不是:
$user->Phonenumberss
可以通过别名定制定义。