Laravel 查询生成器 whereIn 不起作用

Laravel query builder whereIn doesn't work

我有以下模型,我需要得到一个 district_id 没有字段名称的数组。 (例如,[1, 2, 3, 4]

Province [id, description]

District [id, description, province_id]

$province_arr = DB::table('provinces')->pluck('id')->toArray();

$district_arr = DB::table('districts')->pluck('id')
     ->whereIn('province_id', $province_arr)->toArray();

但是$district_arr总是空的。 (即 dd($district_arr) 总是给出 []

数据库包含与查询匹配的数据。谁能帮我弄清楚为什么这行不通?

您应该像这样在 whereIn 之后使用 pluck

$district_arr = DB::table('districts')->whereIn('province_id', $province_arr)
    ->pluck('id')->toArray();

因为pluck这里是从数据库获取数据的方法。如果您在从数据库获取后添加条件,您将得不到预期的结果。

否则你从数据库中获取数据,然后你在 Support Collection 上 运行 whereIn 并且没有 province_id 的记录,因为它们都只有 id 如您在 pluck

中指定的那样