laravel - Laravel 在 where 子句静态方法中具有列名
问题描述
最近我刚刚意识到 Laravel 在使用驼峰式大小写加入 where 子句时会生成一个带有列名的静态方法
例子
$user = User::whereName('john')->first(); // added `name` as a column name
当将此代码调用到 SQL 时,它会生成
$user = User::whereName('john')->toSql();
//it returns
select * from `users` where `name` = ?
这确实给出了预期的结果,因为它返回了一个具有 name 的用户john
。
我搜索了 Laravel 文档,但找不到这个函数或它的定义位置。
我所需要的只是澄清这个方法是好的还是最好的,以便我可以继续使用它,并且知道该方法是如何在 Laravel 框架或任何其他方式中生成的
解决方案
这种方法是完全合法的,你没有很好的记录。在Query\Builder
其中利用__call
函数覆盖来生成功能,您可以在此处查看确切的功能。
魔术方法和__call
功能的主题,如果它们变得更好,通常是有争议的。如果你使用IDE helper。它实际上会为您键入提示方法,从而减轻它所采用的一些神奇方法,并为您提供流畅的 IDE 体验。
我拥有的本地项目中生成的类型提示的示例。
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\User whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\User whereEmail($value)
因此,我不会担心这不是最好的方法。有很多方法可以做你正在做的事情,但这是正确的方法之一。
推荐阅读
- css - React Native - 居中 flexWrap 容器的内容
- python - def __str__(self) 问题 - Django
- c# - 从网站 HtmlAgilityPack 检索基本值
- javascript - 将菜单项链接到同一页面,但显示不同的 div
- unity3d - Unity协程(MEC)未调用
- javascript - while(array.length) 如何在没有任何增量/减量的情况下工作
- rest - 如何通过 Delphi 在 Google Drive API 上调用创建权限
- webpack - webpack DllPlugin:WEBPACK_EXTERNAL_MODULE_dll_reference 未定义
- javascript - 你可以帮帮我吗。我怎样才能做出实时变化的价值?
- azure - 我可以从 Azure DevOps 向 Azure 中的 vm 运行 powershell 命令吗?