Laravel 8查询多用户ID关联邮箱仅返回首个ID结果问题如何解决
问题原因
Laravel 查询构造器的where()方法仅支持单值匹配场景,当你传入包含多个用户ID的数组作为匹配值时,方法只会取数组的第一个元素做匹配,因此最终返回结果仅包含第一个ID对应的邮箱。
修复方案
将查询语句中的where()替换为专门用于数组范围匹配的whereIn()方法即可,同时建议补充参数校验逻辑避免非法参数引发的查询异常,修改后代码如下:
public function ActionUserPush(Request $request) { // 校验入参格式 $request->validate([ 'user_id' => 'required|array', 'user_id.*' => 'integer' ]); $userIds = $request->user_id; $value = DB::table('users')->whereIn('id', $userIds)->pluck('email'); dd($value); }
补充说明
如果你的users表开启了Laravel软删除功能,需要在查询链中增加->whereNull('deleted_at')过滤已软删除的用户数据,避免返回无效结果。
内容的提问来源于stack exchange,提问作者ALAA ELDIN
相关产品推荐
相关产品推荐

