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 更新了项目,但没有任何改变。

Where 条件不支持数组,您必须使用 WhereIn 条件

$lessonIDs = DB::table($personType."_has_lesson")->where("id",$userID)->pluck("lesson_id");
$lessons = DB::table("lesson")->whereIn("lesson_id",$lessonIDs)->get();