项目的数据库命名如何在 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 列)中的 属性。