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

Laravel中从Controller向Blade传递数据并渲染的问题

解决Blade视图渲染数组内对象数据的问题

嘿,我一眼就瞅出问题所在啦!你的$dataSample是一个包含单个对象的数组,而非直接的对象实例,这就是你没法直接渲染那三个值的核心原因。

先看你dump出来的结果:

array:1 [▼ 0 => {#798 ▼ +"current": "2840" +"prior": "2257" +"full": "2700" } ]

这说明$dataSample本身是数组结构,索引为0的元素才是存储着current/prior/full的目标对象。下面给你两种靠谱的解决办法:

方案1:在Blade视图中直接处理

方式A:直接访问数组索引(确定数组非空时用)

既然数组里只有这一个对象,你可以直接取索引0的元素再访问属性:

<div class="uk-float-right uk-margin-small-right">
    <span class="uk-text-bold">Current: {{ $dataSample[0]->current }}</span>
    <span class="uk-text-muted">Prior: {{ $dataSample[0]->prior }}</span>
    <span class="uk-text-primary">Full: {{ $dataSample[0]->full }}</span>
</div>

方式B:用@foreach循环(更安全,兼容数组为空的情况)

如果担心后续数组可能有多个元素,或者想避免数组为空时报错,用循环更稳妥:

<div class="uk-float-right uk-margin-small-right">
    @foreach($dataSample as $data)
        <span class="uk-text-bold">Current: {{ $data->current }}</span>
        <span class="uk-text-muted">Prior: {{ $data->prior }}</span>
        <span class="uk-text-primary">Full: {{ $data->full }}</span>
    @endforeach
</div>

方案2:在控制器中提前处理数据

如果你想让视图代码更简洁,可以在控制器里把数组转成单个对象:

// 如果你是用Eloquent查询,把get()改成first()就能直接拿到单个对象
$dataSample = YourModel::where('your_condition')->first();

// 如果已经是数组了,也可以直接取第一个元素(加?? null防止数组为空报错)
$dataSample = $dataSample[0] ?? null;

处理完之后,视图里就可以直接用{{ $dataSample->current }}这类写法啦。

小提示:避免报错的小技巧

如果怕出现“属性不存在”或者“数组索引不存在”的错误,可以用PHP的可选链操作符?->,比如:

{{ $dataSample[0]?->current }}

这样即使数组为空或者对象不存在,页面也不会崩,只会显示空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:00:48