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

Laravel 5.8 Blade模板中如何统计每个商品对应的bid_offers竞价数量

实现方案

方案1:Blade模板直接使用集合where计数(符合你当前代码结构的要求)

你已经将全量bid_offers集合传递到视图,Laravel集合原生支持where过滤方法,直接替换模板中对应的统计位置代码即可:
找到模板里的

<span class="ml-auto">count the bids on this product?</span>

替换为:

<span class="ml-auto">{{ $bid_offers->where('bid_id', $bid->id)->count() }} 条报价</span>

原理是通过集合的where方法筛选出和当前竞价活动id匹配的所有报价记录,再调用count方法统计数量。

方案2:Eloquent关联预加载统计(更推荐,性能更优)

你当前的实现需要查询全量报价表,数据量大时性能损耗很高,Laravel内置的关联统计功能可以更优雅的解决该问题,且完全兼容Laravel 5.8版本:

  1. 首先在Bid模型中定义和报价表的一对多关联:
// app/Bid.php
public function bidOffers()
{
    return $this->hasMany(BidOffer::class, 'bid_id');
}
  1. 修改控制器查询代码,使用withCount预统计每个竞价活动的报价数,不需要再查询全量报价表:
public function show_index()
{
    $bids = Bid::withCount('bidOffers')
        ->inRandomOrder()
        ->limit(8)
        ->get();
    return view('user_views_auction/index', compact('bids'));
}
  1. Blade模板中直接调用自动生成的统计属性即可:
<span class="ml-auto">{{ $bid->bid_offers_count }} 条报价</span>

该方案查询效率比前端过滤高很多,适合生产环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:45:03