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,所以我真的需要弄清楚这件事。
解决方案
我无法重现您提到的问题...您使用的是哪个版本的 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_read
列users
。但是,您可以在错误中看到isRead
未转换为小写。
也许您可以改用selectRaw:
DB::table('table_name')->selectRaw('is_read as isRead')->get();
查询将是:
select is_read as isRead from `table_name`
否则,您能否更新您的问题以提供有关如何重现您的大写问题的更多信息。
推荐阅读
- shopify - 在 Shopify 中更改现有应用的授权 URL
- tensorflow - 如何在没有 TF-slim 的情况下使用多个预训练模型?
- android - 发布用于生产 React Native 的应用程序
- javascript - TypeScript - 数字更大或更小验证仅在数字具有相同“长度”时响应
- python - 解析数据框和 fastafile
- hadoop - 通过 Knox 获取到 Hive 的 JDBC 连接时出错
- go - 我如何查询除今天创建的值之外的所有值?
- android - 如何在没有提示的情况下以编程方式安装 android 应用程序,
- java - 保存在一个存储库中并使其他存储库反映保存
- mysql - MySQL 在两台相同的服务器上执行的一个查询使用不同的索引