You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Eloquent whereIn传入字符串参数查询不生效问题

问题原因
  • 变量定义存在语法错误。PHP不支持逗号分隔多值直接赋值给单个变量的写法,你写的$loc_name1='Kochi','Hydarabad','Buwaneswar';执行后,$loc_name1实际只会被赋值为字符串'Kochi',后面的'Hydarabad'、'Buwaneswar'属于无接收变量的独立表达式,不会被存入该变量。
  • whereIn传参格式不符合要求。Laravel的whereIn方法第二个参数要求传入一维值数组,你写的[$loc_name1]相当于给变量额外套了一层数组结构,传入的实际是二维数组,和方法要求的参数格式不匹配,无法生成正确的查询条件。
修改方案
  1. 首先将变量正确定义为一维数组:
    如果是手动固定枚举值,直接定义为数组格式即可:
$loc_name1 = ['Kochi','Hydarabad','Buwaneswar'];

如果原始值是逗号拼接的字符串(比如前端传参、文本读取得到的'Kochi,Hydarabad,Buwaneswar'格式字符串),用explode函数拆分为一维数组,可搭配array_filter过滤空值避免异常:

// 假设原始值是逗号拼接的字符串
$loc_name1 = 'Kochi,Hydarabad,Buwaneswar';
$loc_name1 = array_filter(explode(',', $loc_name1));
  1. 调用whereIn时直接传入定义好的一维数组变量,不要额外套方括号包裹,修改后的完整查询代码如下:
$employees = DB::table('audit_employee_basics')
    ->select(
        'audit_employee_basics.id as empid',
        'emp_name',
        'emp_code',
        'designation_name',
        'emp_company_email_id',
        'emp_contact_number',
        'emp_gender',
        'emp_location',
        'department_name',
        'emp_joining_date',
        'fk_emp_previous_exp',
        'image'
    ) 
    ->join('audit_department', 'audit_employee_basics.emp_fk_dep', '=', 'audit_department.id')
    ->join('audit_employee_skillset', 'audit_employee_skillset.fk_emp_id', '=', 'audit_employee_basics.id')
    ->join('audit_designation', 'audit_designation.id', '=', 'audit_employee_basics.emp_fk_des_id')
    ->whereIn('audit_employee_basics.emp_location', $loc_name1)
    ->distinct()
    ->get();

内容的提问来源于stack exchange,提问作者Shanu k k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:00:53