首页 > 解决方案 > Laravel Query Builder 奇怪的列名转换

问题描述

我试图弄清楚为什么 DB::raw() 查询是以小写形式发送的?

Query = DB::('table_name')->select(['is_read as isRead'])->get();
Result = [{ isRead: true }]

但是当我做原始时,它会将其转换为小写

Query = DB::('table_name')->select(DB::raw('is_read as isRead'))->get();
Result = [{ isread: true }]

我有理由使用 DB raw,所以我真的需要弄清楚这件事。

标签: phplaravelquery-builder

解决方案


我无法重现您提到的问题...您使用的是哪个版本的 Laravel?

例如,如果我运行以下命令:

DB::table('users')->select(DB::raw('is_read as isRead'))->get();

我会得到错误:

使用消息'SQLSTATE [42S22] 照亮/数据库/查询异常:找不到列:1054 '字段列表'中的未知列'is_read'(SQL:选择 is_read as isRead from users)'

这是正常的,因为我的表中没有is_readusers。但是,您可以在错误中看到isRead未转换为小写。

也许您可以改用selectRaw

DB::table('table_name')->selectRaw('is_read as isRead')->get();

查询将是:

select is_read as isRead from `table_name`

否则,您能否更新您的问题以提供有关如何重现您的大写问题的更多信息。


推荐阅读