php - AS400 上的 Laravel 8 使用带点的 ODBC 表名
问题描述
我在一个项目中,我需要从包含“。”的表中检索信息。以它的名字...我的查询如下所示:
$data['scale'] = DB::connection('odbc')
->table('QS36F."CF.STYL1"')
->select('SSCALE','SINTDE')
->where('STYLE#', 'LIKE', $style.'%')
->get();
显然上述方法不起作用并返回
SQLSTATE[42000]:语法错误或访问冲突:[IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0113 - 名称“”“CF”不允许。(SQLPrepare[0] at /home/calvin/rpmbuild/BUILD/php-8.0.8/ext/pdo_odbc/odbc_driver.c:203) (SQL: select "SSCALE", "SINTDE" from "QS36F".""" CF"."STYL1""" where "STYLE#" LIKE 1981USD%)
我可能可以使用完整的原始查询使其工作,但如果无论如何可以使用普通的雄辩函数使其工作,我肯定更喜欢使用 table() select() where() get() 等......
有什么建议么?
解决方案
好的,所以我使用 DB::raw() 解决了这个问题,如下所示:
$data['scale'] = DB::connection('odbc')
->table(DB::raw('QS36F."CF.STYL1"'))
->select('SSCALE','SINTDE')
->where('STYLE#', 'LIKE', $style.'%')
->get();
至少这样我没有使用完整的原始查询。我希望这将有助于下一个需要处理包含点的表名的人哈哈
推荐阅读
- php - PHP SQL 请求什么都不做
- scala - Spark Scala 函数调用
- go - 如何处理 defer 语句中的错误
- r - 通过 quantmod 将股票数据循环连接在一起
- android - recyclerView 向我显示 java.lang.RuntimeException:添加窗口失败
- sql-server - 为什么 SQL Server 数据库函数执行缓慢 | 带有存储过程的 SSRS 多值参数
- c - ltrace 的替代方案,它适用于与 `-z now` 链接的二进制文件?
- amazon-web-services - aws cli 安装后问题:Errno 2 - 没有这样的文件或目录
- python - next = __next__ 做什么?
- facebook-instant-games - 检测到损坏的 URL