php - 为什么即使模型名称在 Laravel 上是复数,它也能工作?
问题描述
我是 Laravel 的新手。
当我学习 Laravel 时,我注意到Model
我所做的 ALL 都是用复数命名的,但它可以正常工作。
我想知道这是怎么发生的,因为我在注意到这一点后阅读了文件,上面写着“模型应该以单数命名。”。
谁能解释它是如何工作的?
PS这些模型中没有提及$table
。
很抱歉我想说“单数”而不是“音节”。
解决方案
laravel 的一般约定是对模型使用单数名称,对表使用复数名称。请注意,您可以通过protected $table = 'yourTableName';
在模型中使用来更改关联的表名称。我个人认为手动设置是一个好习惯。
我无法解释它是如何获得关联的表名的,因为它将是一篇文章(我也不确定我能否正确解释),但我可以把你送到正确的方向。
由于 laravel 是开源的,你实际上可以在底层实现峰值,看看它是如何工作的。您可以去framework/src/Illuminate/Database/Eloquent/Model.php
或在线查看它以查看关联功能。您将看到getTable
将返回表名的函数。但它使用了另一个功能。所以你需要看看那个函数里有什么。
经过几次挖掘,您会发现 laravel 实际上使用了不同的库来帮助获取项目名称。它使用变形器。您可以浏览一下它以了解它是如何获得复数名称的。在那里你可以找到底层代码和规则等来了解它是如何工作的。
推荐阅读
- java - 如何访问 PrintWriter 中拆分的最后一个元素?
- php - 使用 ssl 向服务器请求时出现错误“Гknown protocol”
- r - 栅格/预测函数返回低于训练样本范围的结果
- java - 在java中实现插入排序时比较多个字段
- python - 如何在 pandas 中列的值计数条件下采用相同的 DataFrame?
- git - 在 Azure DevOps 中使用 master 和 develop 分支,避免 master 的一前一后状态
- c++ - 使用 scanf_s 获取字符串值的问题
- docker - 多个 docker 容器在同一主机上相互解析
- ionic4 - Ionic4 SplashScreen 背景为黑色
- azure - 将 Azure 发布工件默认目录配置为 C(使用“1”参数调用“GetHostByName”:“No such host is known”)