Laravel SQLSTATE[HY093] 带数组查询
Laravel SQLSTATE[HY093] with array query
我查询如下
$lessonIDs = DB::table($personType."_has_lesson")->where("id",$userID)->pluck("lesson_id");
$lessons = DB::table("lesson")->where("lesson_id",$lessonIDs)->get();
lessonIDs
的值为 ["EEZ401","EEZ02","EEZ403"]
我知道我们可以在 Laravel 上使用数组进行查询,但 returns SQLSTATE[HY093]: Invalid parameter number: parameter was not defined (SQL: select * from "lesson" where "lesson_id" = EEZ401)
。我做了一些研究,发现 laravel 上有一个 bug,然后我用 composer update
更新了项目,但没有任何改变。
- 数据库是postgresql
- Laravel版本为9.10.1
Where 条件不支持数组,您必须使用 WhereIn 条件
$lessonIDs = DB::table($personType."_has_lesson")->where("id",$userID)->pluck("lesson_id");
$lessons = DB::table("lesson")->whereIn("lesson_id",$lessonIDs)->get();
我查询如下
$lessonIDs = DB::table($personType."_has_lesson")->where("id",$userID)->pluck("lesson_id");
$lessons = DB::table("lesson")->where("lesson_id",$lessonIDs)->get();
lessonIDs
的值为 ["EEZ401","EEZ02","EEZ403"]
我知道我们可以在 Laravel 上使用数组进行查询,但 returns SQLSTATE[HY093]: Invalid parameter number: parameter was not defined (SQL: select * from "lesson" where "lesson_id" = EEZ401)
。我做了一些研究,发现 laravel 上有一个 bug,然后我用 composer update
更新了项目,但没有任何改变。
- 数据库是postgresql
- Laravel版本为9.10.1
Where 条件不支持数组,您必须使用 WhereIn 条件
$lessonIDs = DB::table($personType."_has_lesson")->where("id",$userID)->pluck("lesson_id");
$lessons = DB::table("lesson")->whereIn("lesson_id",$lessonIDs)->get();