首页 > 解决方案 > 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

标签: phplaravelpostgresqleloquent

解决方案


你必须使用\DB::Raw()

根据错误描述,它没有获得字段的价值。

H5pContent::where('library_id', $library_id)->update(['filtered' => \DB::raw(null) ]);


推荐阅读