项目的数据库命名如何在 CakePHP 中工作?
How database naming for items work in CakePHP?
我正在学习 PHP 以及库 CakePHP。
我想知道 CakePHP 如何使用 add()
方法命名添加到数据库的项目?
我阅读了一些关于 Cake 中命名约定的页面PHP,但不太了解。举个命名的例子:
假设我有一些与某些人相关的项目,并且我有 table 的人和项目。在我的应用程序中,我选择了一个人并向该人添加了一个项目。在项目 table 中,我希望该项目的文件名列值为:
<personname>_<itemname>_<numberoftheitem>_<date>
如何在 CakePHP 中配置该命名?
组件有一个 initialize() 函数,也许是那种配置的地方?
Table class 名称为复数形式,驼峰式,并以 Table 结尾。 UsersTable、ArticleCategoriesTable 和 UserFavoritePagesTable 都是常规模型名称的示例。
Table CakePHP 模型对应的名字是复数加下划线。上述模型的基础 table 分别是用户 article_categories 和 user_favorite_pages。
惯例是 table 和列名使用英文单词。如果您使用其他语言的单词,CakePHP 可能无法处理正确的变形(从单数到复数,反之亦然)。
带有两个或更多单词的字段名称带有下划线:first_name。
Cake 的命名约定使用 id 作为主键。对于外键,使用 _id 前缀为单数 snake case 相关 table 名称。
hasMany 中的外键,belongsTo/hasOne 关系默认识别为相关 table 的(单数)名称后跟 _id。因此,如果用户有许多文章,文章 table 将通过 user_id 外键引用用户 table。对于名称包含多个单词的 table,例如 article_categories,外键将是 article_category_id.
Join tables,用在模型之间的BelongsToMany关系中,应该以他们将加入的模型tables命名,按字母顺序排列(articles_tags而不是tags_articles).
您可以在 docs 中阅读有关 Cake 命名约定的更多信息。
查看@RavK 的回答。
要设置 属性 值,您可以在实体中使用此方法
public function _setFilename($filename)
{
return $this->person->name . '_' . $this->itemname . '_' . $this->numberoftheitem . '_' . $this->date;
}
请注意,您需要包含在实体中的 person/people,否则您必须执行数据库查询才能获取名称。
编辑:不知道您从哪里获得项目名称、项目编号和数据,但我假设它是您实体(table 列)中的 属性。
我正在学习 PHP 以及库 CakePHP。
我想知道 CakePHP 如何使用 add()
方法命名添加到数据库的项目?
我阅读了一些关于 Cake 中命名约定的页面PHP,但不太了解。举个命名的例子:
假设我有一些与某些人相关的项目,并且我有 table 的人和项目。在我的应用程序中,我选择了一个人并向该人添加了一个项目。在项目 table 中,我希望该项目的文件名列值为:
<personname>_<itemname>_<numberoftheitem>_<date>
如何在 CakePHP 中配置该命名? 组件有一个 initialize() 函数,也许是那种配置的地方?
Table class 名称为复数形式,驼峰式,并以 Table 结尾。 UsersTable、ArticleCategoriesTable 和 UserFavoritePagesTable 都是常规模型名称的示例。
Table CakePHP 模型对应的名字是复数加下划线。上述模型的基础 table 分别是用户 article_categories 和 user_favorite_pages。
惯例是 table 和列名使用英文单词。如果您使用其他语言的单词,CakePHP 可能无法处理正确的变形(从单数到复数,反之亦然)。
带有两个或更多单词的字段名称带有下划线:first_name。
Cake 的命名约定使用 id 作为主键。对于外键,使用 _id 前缀为单数 snake case 相关 table 名称。
hasMany 中的外键,belongsTo/hasOne 关系默认识别为相关 table 的(单数)名称后跟 _id。因此,如果用户有许多文章,文章 table 将通过 user_id 外键引用用户 table。对于名称包含多个单词的 table,例如 article_categories,外键将是 article_category_id.
Join tables,用在模型之间的BelongsToMany关系中,应该以他们将加入的模型tables命名,按字母顺序排列(articles_tags而不是tags_articles).
您可以在 docs 中阅读有关 Cake 命名约定的更多信息。
查看@RavK 的回答。
要设置 属性 值,您可以在实体中使用此方法
public function _setFilename($filename)
{
return $this->person->name . '_' . $this->itemname . '_' . $this->numberoftheitem . '_' . $this->date;
}
请注意,您需要包含在实体中的 person/people,否则您必须执行数据库查询才能获取名称。
编辑:不知道您从哪里获得项目名称、项目编号和数据,但我假设它是您实体(table 列)中的 属性。