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

Laravel Blade模板:如何在@foreach中判断null并隐藏<li>元素

Laravel Blade中根据字段是否为null控制列表项显示的正确写法

针对你的需求,这里提供两种常见场景的解决方案,以及说明为什么你之前用isset和empty没生效:

场景1:整个<li id="step6">仅当数据集里存在非null的sixth_step时显示

如果你的需求是只要$dbQuery中有任意一条记录的sixth_step不为null,就显示这个列表项,否则隐藏,可以用集合的whereNotNull和isNotEmpty方法做判断:

@if($dbQuery->whereNotNull('sixth_step')->isNotEmpty())
    <li id="step6">
        <strong>Schritt 6<br>
            @foreach($dbQuery as $query)
                {{ $query->sixth_step }}
            @endforeach
        </strong>
    </li>
@endif

场景2:每条记录对应一个列表项,仅当当前记录的sixth_step不为null时显示

如果你的原代码结构有误,实际是想为每条符合条件的记录生成一个列表项,可以把判断放在循环内部:

@foreach($dbQuery as $query)
    @if(!is_null($query->sixth_step))
        <li id="step6-{{ $query->id }}">
            <strong>Schritt 6<br>{{ $query->sixth_step }}</strong>
        </li>
    @endif
@endforeach

为什么isset和empty没生效?

  • isset($query->sixth_step):这个函数判断的是变量是否存在且不为null,而你的字段是存在但值为null,所以isset会返回false,如果你的写法是@if(isset(...)),那null时确实不会显示,但如果你的需求是严格判断是否为null,is_null更直观。
  • empty($query->sixth_step):这个函数会把null、空字符串、0、空数组等都视为“空”,如果你的sixth_step可能有合法的0或空字符串,empty会误判,所以不适合仅判断null的场景。

另外,你也可以用Laravel提供的filled()辅助函数,它会判断值不为null且不为空内容,适合需要同时排除空值的场景:

@if(filled($query->sixth_step))
    <!-- 显示内容 -->
@endif

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:57:25