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

如何在Laravel查询构建器中仅当变量非空时使用where条件

解决方案

在Laravel中,你可以通过两种简洁的方式实现仅当$last_name非空时才添加对应的WHERE子句的需求:

方法一:使用查询构建器的when()方法(推荐)

when()是Laravel专门为条件查询设计的方法,会自动根据传入的条件判断是否执行后续的查询逻辑:

$first_name = $request->first_name;
$last_name = $request->last_name;

$customers = Customer::where('first_name', '=', $first_name)
    ->when($last_name, function ($query) use ($last_name) {
        return $query->where('last_name', '=', $last_name);
    })
    ->get();
  • 第一个参数$last_name会被自动判断:空字符串、null、false都会被视为不满足条件,此时不会添加last_name的查询子句。
  • 若需要更严格的非空判断(比如排除仅含空格的字符串),可以把条件改为trim($last_name) !== ''。

方法二:传统条件判断写法

如果更习惯原生的条件逻辑,也可以手动链式调用查询构建器:

$first_name = $request->first_name;
$last_name = $request->last_name;

// 先初始化基础查询
$query = Customer::where('first_name', '=', $first_name);

// 仅当$last_name非空时添加查询条件
if ($last_name) {
    $query->where('last_name', '=', $last_name);
}

// 执行查询
$customers = $query->get();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:25:38