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

如何修正Laravel查询以精确匹配指定category_id且满足active=1?

Laravel查询优化:精确匹配指定category_id并满足active=1

你的原查询代码其实已经实现了需求——精确匹配category_id为223、15、20且active=1的记录。不过可以根据数据库中category_id的字段类型做细节优化,避免隐式类型转换可能带来的潜在问题:

  • 如果category_id是整数类型(如数据库字段为int/bigint),将数组中的字符串值改为整数,匹配更精准:
Products::whereIn('category_id', [223, 15, 20])
    ->where('active', 1)
    ->get();
  • 若要进一步强制严格匹配(比如避免MySQL自动类型转换导致的意外匹配),可以使用whereRaw直接编写原生SQL条件:
Products::whereRaw('category_id IN (223, 15, 20) AND active = 1')
    ->get();

本质上,whereIn方法本身就是用于精确匹配字段值在指定集合中的记录,配合where('active', 1)就能同时满足两个条件,原代码逻辑是完全正确的,上述优化只是针对数据类型的严谨性调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:01:22