php - Laravel / Eloquent / Postgres:更新查询导致错误“无效参数号:未定义参数”
问题描述
我在这个包的供应商代码中有这个雄辩的查询:
H5pContent::where('library_id', $library_id)->update(['filtered' => null]);
我将 Postgres 用于我的应用程序。这个包是为 MySQL 硬连线的,所以我不得不做一些改变,但我希望这个查询也能与 Postgres 一起工作。但是,它不会:
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
(SQL: update "h5p_contents" set "filtered" = ?, "updated_at" = 2020-09-23 09:41:46 where "library_id" = 146)
这是我从上述查询中得到的典型错误。似乎唯一的参数 ,null
已经以某种方式被过滤掉了。这里有什么问题?
编辑
即使是这个简单的查询也会导致同样的错误SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
:
H5pContent::where("library_id", $library_id)->get();
此查询生成的 SQL 是
select * from "h5p_contents" where "library_id" = 291
解决方案
你必须使用\DB::Raw()
:
根据错误描述,它没有获得字段的价值。
H5pContent::where('library_id', $library_id)->update(['filtered' => \DB::raw(null) ]);
推荐阅读
- c++ - UTF-8:输入文本和硬编码之间的不同行为
- google-chrome - 在 HTML 页面中从 URL 中选择并以黄色突出显示的文本
- java - 我对编程很陌生,想知道如何在我的 GUI 上显示 JButton
- java - ByteBuddy 是否可以使用 ASM 来实现一个方法
- c - 结构数组未按预期存储数据
- reactjs - API登录反应未连接
- x11 - 从 WSL2 转发 X11 失败
- flutter - 如何将列表的元素转换为单个数字
- java - 在 Flutter 中从 Play 商店获取产品时应用内购买崩溃
- angular - 当我更改引导顺序时,为什么我的 Angular 应用程序卡在加载中?