首页 > 解决方案 > 为什么即使模型名称在 Laravel 上是复数,它也能工作?

问题描述

我是 Laravel 的新手。

当我学习 Laravel 时,我注意到Model我所做的 ALL 都是用复数命名的,但它可以正常工作。

我想知道这是怎么发生的,因为我在注意到这一点后阅读了文件,上面写着“模型应该以单数命名。”。

谁能解释它是如何工作的?

PS这些模型中没有提及$table

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

标签: phpdatabaselaravelmodelrelation

解决方案


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

我无法解释它是如何获得关联的表名的,因为它将是一篇文章(我也不确定我能否正确解释),但我可以把你送到正确的方向。

由于 laravel 是开源的,你实际上可以在底层实现峰值,看看它是如何工作的。您可以去framework/src/Illuminate/Database/Eloquent/Model.php在线查看它以查看关联功能。您将看到getTable将返回表名的函数。但它使用了另一个功能。所以你需要看看那个函数里有什么。

经过几次挖掘,您会发现 laravel 实际上使用了不同的库来帮助获取项目名称。它使用变形器。您可以浏览一下它以了解它是如何获得复数名称的。在那里你可以找到底层代码和规则等来了解它是如何工作的。


推荐阅读