doctrine/inflector

why change the usages to usage?

Closed this issue · 6 comments

Several reasons:

I don't understand chinese, and I cannot copy/paste your image in a translator. Can someone translate?

this is my question and chatgpt answer:

me: (new \App\Models\FileUsage)->getTable() 为什么获取的是 file_usage, 没有使用 $table 属性,也没有重写 getTable 函数
根据你提供的代码 (new \App\Models\FileUsage)->getTable(),获取的是表名(table name),而不是 $table 属性或 getTable 函数。

gpt: 在 Laravel 中,模型的表名默认会根据模型类名进行推断。根据 Laravel 的命名约定,模型类名的复数形式将被用作默认的表名。例如,FileUsage 模型类的默认表名将会是 file_usages。

所以,当你执行 (new \App\Models\FileUsage)->getTable() 时,它会返回模型类 FileUsage 对应的表名 file_usages。这是 Laravel 的默认行为,不需要显式地定义 $table 属性或重写 getTable 函数。

如果你希望使用其他的表名,你可以在模型类中定义 $table 属性,将其设置为你想要的表名。例如:

getTable() 时,它将返回 your_custom_table_name,而不再是默认的推断值。 总之,通过执行 (new \App\Models\FileUsage)->getTable(),你可以获取到 Laravel 根据默认命名约定所推断的模型表名。

me: usage 的复数是什么

gpt: "usage" 这个单词的复数形式是 "usages"。

根据一般的英语语法规则,大多数名词的复数形式是在词尾添加 "s"。对于以辅音字母 + "y" 结尾的名词,将 "y" 变为 "i",再添加 "es"。但是 "usage" 是一个特殊情况,它的复数形式是在词尾直接添加 "s",不需要转换 "y"。

因此,"usage" 的复数形式是 "usages"。在 Laravel 中,当使用默认的表名推断机制时,模型类名的复数形式将被用作表名。因此,FileUsage 模型类的默认表名是 file_usages,其中 "usage" 被转换为 "usages" 来形成复数形式。

me: 什么情况下,usage 的复数还是 usage

gpt: "usage" 这个词在大多数情况下,其复数形式是 "usages"。然而,有一些特殊情况下,词汇的复数形式与其单数形式相同,"usage" 就是其中之一。

以下是一些常见情况下,词汇的复数形式与单数形式相同的例子:

集合名词:有些名词表示集合或群体,其复数形式与单数形式相同。例如,"deer"(鹿)、"sheep"(羊)等。

非可数名词:某些名词是非可数名词,它们不具有可数性,因此没有复数形式。例如,"water"(水)、"information"(信息)等。

以 "s" 结尾的名词:一些名词以 "s" 结尾,即使是复数形式也与单数形式相同。例如,"series"(系列)、"species"(物种)等。

因此,在大部分情况下,"usage" 的复数形式是 "usages",但在特定上下文中,它的复数形式仍然是 "usage"。需要根据具体语境和规范来确定正确的复数形式使用。

When using the \App\Models\FileUsage model in Laravel, the expected table name should be file_usages, but the actual result is file_usage, which is incorrect. The plural form of "usage" is "usages". This issue existed in version 2.0.7.

I have now updated to version 2.0.8.

Ok so… it's fixed, right?

may be right, because now are revert b8ea17c