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

如何在Laravel中使用多Where条件实现特定数据查询

Laravel多条件筛选查询方案

针对你需求的同一列多条件(Position为All或用户职位、Gender为All或用户性别)筛选,可通过Laravel查询构造器的分组where条件实现,确保两个条件组同时满足。

基础准备

假设对应的数据表模型为 Item,当前登录用户的职位和性别可通过认证系统获取:

$userPosition = auth()->user()->position;
$userGender = auth()->user()->gender;

查询语句实现

$items = Item::query()
    ->where(function ($query) use ($userPosition) {
        // 筛选Position为All或用户职位
        $query->where('Position', 'All')
              ->orWhere('Position', $userPosition);
    })
    ->where(function ($query) use ($userGender) {
        // 筛选Gender为All或用户性别
        $query->where('Gender', 'All')
              ->orWhere('Gender', $userGender);
    })
    ->get();

逻辑说明

  • 第一个闭包分组处理Position的筛选:只要Position是All或者等于用户职位,就符合条件
  • 第二个闭包分组处理Gender的筛选:只要Gender是All或者等于用户性别,就符合条件
  • 两个分组通过where连接,意味着必须同时满足两个分组的条件,完全匹配你给出的示例结果(当用户职位是Permanent、性别是Male时,会筛选出A、B、D三条数据)

对应的原生SQL

以用户职位为Permanent、性别为Male为例,上述查询生成的原生SQL如下:

select * from `items` 
where (`Position` = 'All' or `Position` = 'Permanent') 
and (`Gender` = 'All' or `Gender` = 'Male')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:12:36