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

Laravel嵌套集合查询:基于关联字段筛选并计算余额总和

问题解决方法

你的代码失效的核心原因是:interest_rate 字段不在主集合的直接属性中,而是嵌套在关联的 savings_product 对象里,直接使用 where('interest_rate', '>', '0') 无法定位到这个嵌套字段,导致筛选逻辑不生效。

以下是两种可行的解决方案:

方案一:使用集合嵌套字段查询

Laravel Collection 的 where 方法支持点语法访问嵌套属性,直接定位到关联对象的字段:

{{ $data->where('savings_product.interest_rate', '>', 0)->sum('balance') }}

注意:将比较值从字符串 '0' 改为数字 0,能避免字符串比较带来的潜在问题(比如 '0.5' 和 '0' 的字符串比较逻辑不符合数值比较预期)。

方案二:使用 filter 自定义筛选逻辑

如果需要更灵活的判断(比如强制类型转换、处理关联对象为空的情况),可以用 filter 方法手动筛选:

{{ $data->filter(function ($account) {
    // 先确保关联的savings_product存在,再判断利率是否大于0
    return optional($account->savings_product)->interest_rate > 0;
})->sum('balance') }}

optional() 方法可以避免因部分记录没有关联 savings_product 而抛出错误,会自动将 null 对象的属性访问转为 null,不影响筛选逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:42:19