CakePHP在表名中的命名约定

时间:2013-08-19 19:24:53

标签: php cakephp inflector

对于CakePHP应用程序,我正在考虑遵循CakePHP命名约定的数据库表名称。但是,很多时候我遇到了一个通用表,其中包含的信息不是它自己的实体,而是包含其他实体信息。此表中的信息仅供重复使用,因此它与主实体表分开。

例如:我使用的产品有时可能是主产品。在这种情况下,表“products”链接到表“master_product_information”,以获取我在“products”表中不需要的额外信息。

另一个例子:包含多个页面的元数据的表。通常我会将表命名为“pages_metadata”,但对于Cake来说,这需要是复数,而“pages_metadatas”似乎并不合适。所以我再次选择“pages_metadata_information”。

如何命名不包含实体的表? [entity] _information是一个好的信息吗?

我希望听到一些建议。

感谢。

1 个答案:

答案 0 :(得分:5)

正确的答案(IMO)就是采用CakePHP惯例 - 生活将是最简单的方式,即使你偶尔有一些尴尬的表名。

在您的情况下,我将“master_product_information”表命名为master_products。它包含有关master_product的“信息”的事实不需要在表名中指定。就像存储客户信息的表是“客户”表,而不是“customer_information”表。

对于“pages_metadata_information”,我很确定'元数据'是一个复数词。我会使用page_metadata之类的名称,甚至是metadata。元数据与页面或页面相关联的事实很可能不需要在表名中指定。就像“老师”表不会被称为“students_teachers”一样,即使老师总是与学生联系在一起。

你的表名有时可能有点尴尬,但这比破坏惯例要麻烦,而且你会很快习惯它。