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

Laravel原生查询中如何绑定数组参数至IN子句?

解决Laravel原生查询中数组参数绑定到IN子句的问题

你提到的原生查询写法无法运行,是因为Laravel的DB::select不支持直接将数组绑定为单个参数映射到IN子句。以下是两种可行的解决方式:

方法一:使用Query Builder(推荐)

Laravel的Query Builder内置了whereIn方法,能安全且简洁地处理IN查询,自动完成参数绑定与SQL注入防护:

// 查询构造器写法
$users = DB::table('users')
    ->whereIn('id', [1, 2, 3])
    ->get();

// 若使用Eloquent模型,写法更简洁
$users = App\Models\User::whereIn('id', [1, 2, 3])->get();

方法二:手动生成占位符(原生查询场景)

如果必须使用原生SQL(比如处理复杂多表关联或自定义逻辑),可以手动生成与数组长度匹配的占位符?,再将数组元素作为参数传入:

$ids = [1, 2, 3];
// 根据数组长度生成对应数量的占位符
$placeholders = implode(',', array_fill(0, count($ids), '?'));
// 执行原生查询并绑定参数
$users = DB::select("SELECT * FROM users u WHERE u.id IN ($placeholders)", $ids);

这种方式和Symfony的PARAM_INT_ARRAY效果一致,Laravel会自动对每个参数做类型处理与注入防护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 09:54:18