即使Laravel上的模型名称是复数形式,为什么它仍然有效?

时间:2019-03-12 03:26:22

标签: php database laravel model relation

我是Laravel的新人。

在学习Laravel时,我注意到我制作的所有Model均以复数形式命名,但是它可以正常工作。

我想知道这是怎么回事,因为我在注意到文档后才阅读文档,并说“模型应以单数命名”。

任何人都可以解释它的工作原理吗?

P.S。在这些模型中没有提及$table

很抱歉,我想说“单数”而不是“音节”。

1 个答案:

答案 0 :(得分:1)

laravel的常规约定是为模型使用单数名称,为表使用复数名称。请注意,您可以通过在模型中使用protected $table = 'yourTableName';来更改关联的表名。我个人认为手动设置是一个好习惯。

我无法解释它如何获得关联的表名,因为这将是一篇论文(同样我不确定我是否能够正确解释),但是我可以将您引向正确的方向。

由于laravel是开源的,因此您实际上可以深入了解其工作原理。您可以转到framework/src/Illuminate/Database/Eloquent/Model.php或查看online来查看相关功能。您将看到getTable函数,该函数将返回表名。但是它使用了另一个功能。因此,您需要查看该函数中的内容。

经过几次挖掘,您将看到laravel实际上使用其他库来帮助获取项目名称。它使用inflector。您可以浏览一下它,以了解它如何获得复数名称。您可以在其中找到基本的代码和规则等,以了解其工作原理。