Laravel Query Builder奇怪的列名转换

时间:2019-10-03 02:22:44

标签: php 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,所以我真的需要弄清楚这一点。

1 个答案:

答案 0 :(得分:0)

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

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

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

我会得到错误:

  

带有消息'SQLSTATE [42S22]的Illuminate / Database / QueryException:找不到列:1054'字段列表'中的未知列'is_read'(SQL:从users选择is_read as isRead)'

这是正常现象,因为我的is_read表中没有users列。但是,您会看到错误消息isRead没有转换为小写字母。

也许您可以改用selectRaw

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

查询为:

select is_read as isRead from `table_name`

否则,您能否更新您的问题以提供有关如何复制的更多信息,以便解决大写问题。

相关问题