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
中指定的那样
我有以下模型,我需要得到一个 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