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

Laravel实现产品平均评分整星与半星展示的问题咨询

半星评分展示实现方案

原有代码的逻辑仅判断平均评分是否大于当前循环下标$i,当平均分为4.5时,下标0到4均满足4.5 > $i的条件,所以会渲染5颗全星,缺少对小数部分的适配判断。调整方案如下:

  1. 提前计算平均评分变量,避免循环中重复执行聚合查询,提升性能
  2. 新增半星判断分支,适配浮点型评分的展示需求

调整后的完整Blade代码:

<div class="rating">
  @php
    // 提前计算平均评分,仅执行一次聚合查询
    $avgRating = $product->ratings->avg('rating');
  @endphp
  @for($i=0;$i<5;$i++)
    <span class="icon-ratings">
      @if($avgRating >= $i + 1)
        {{-- 评分大于等于当前星位+1,渲染全星 --}}
        <i class="icon-rating icon-rating-x"></i>
      @elseif($avgRating > $i && $avgRating < $i + 1)
        {{-- 评分介于当前星位和下一个星位之间,渲染半星 --}}
        <i class="icon-rating icon-rating-half"></i>
      @else
        {{-- 评分小于等于当前星位,渲染空星 --}}
        <i class="icon-rating icon-rating-o"></i>
      @endif
    </span>
  @endfor
  &nbsp; <div style="float:left">{{$avgRating}}</div>
</div>

注意事项

  • 需提前在样式文件中定义好icon-rating-half半星样式,如果你使用的是第三方字体图标库,可直接替换为对应半星图标的类名;如果是自定义背景图样式,可对应设置半填充的背景效果即可
  • 若需要调整半星的判断精度,比如3.2分渲染空星、3.6分才渲染半星,可调整半星判断的阈值,例如改为$avgRating > $i + 0.5即可将大于0.5的小数部分才渲染为半星

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:54:02