我是Laravel的新人。
在学习Laravel时,我注意到我制作的所有Model
均以复数形式命名,但是它可以正常工作。
我想知道这是怎么回事,因为我在注意到文档后才阅读文档,并说“模型应以单数命名”。
任何人都可以解释它的工作原理吗?
P.S。在这些模型中没有提及$table
。
很抱歉,我想说“单数”而不是“音节”。
答案 0 :(得分:1)
laravel的常规约定是为模型使用单数名称,为表使用复数名称。请注意,您可以通过在模型中使用protected $table = 'yourTableName';
来更改关联的表名。我个人认为手动设置是一个好习惯。
我无法解释它如何获得关联的表名,因为这将是一篇论文(同样我不确定我是否能够正确解释),但是我可以将您引向正确的方向。
由于laravel是开源的,因此您实际上可以深入了解其工作原理。您可以转到framework/src/Illuminate/Database/Eloquent/Model.php
或查看online来查看相关功能。您将看到getTable
函数,该函数将返回表名。但是它使用了另一个功能。因此,您需要查看该函数中的内容。
经过几次挖掘,您将看到laravel实际上使用其他库来帮助获取项目名称。它使用inflector。您可以浏览一下它,以了解它如何获得复数名称。您可以在其中找到基本的代码和规则等,以了解其工作原理。