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

Laravel Blade中动态调用已加载关联执行count()仅@dd正常问题

问题原因

Blade编译{{ }}包裹的内容时,会优先匹配大括号对,你写的{$type['name']}外层的花括号会被Blade提前识别,导致整个表达式被错误拆分,最终执行时无法正确读取到对应关联,返回null后调用count()就会抛出错误。
@dd属于Blade专用指令,编译器会直接将指令包裹的内容原样转为原生PHP执行,不会触发花括号拆分逻辑,因此可以正常输出结果;直接写固定关联名时没有嵌套花括号,不会触发解析冲突,运行也正常。

解决方案
  • 方案1:使用Eloquent原生getAttribute方法获取动态关联,完全避开解析冲突
    {{ $parent_category->getAttribute($type['name'])->count() }}
    
  • 方案2:先将动态关联名赋值给临时变量,再调用关联
    @php $relation = $type['name']; @endphp
    {{ $parent_category->$relation->count() }}
    
  • 方案3(性能优化推荐):预加载关联计数,不需要加载完整的关联集合
    首先在查询分类的代码中添加withCount预加载计数:
    $parent_category = Category::withCount($type['name'])->first();
    
    模板中直接输出计数字段即可:
    {{ $parent_category->getAttribute($type['name'].'_count') }}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:18:01