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

Laravel中compact()报错:未定义变量$pesanan_details

Laravel compact(): Undefined variable $pesanan_details 问题解决

问题原因

执行PesananController的check_out方法时,代码仅在$pesanan不为空时定义$pesanan_details变量,当$pesanan为空时,该变量未初始化就通过compact传入视图,引发变量未定义错误;同时视图中直接遍历$pesanan_details,空数据场景下也会影响页面展示逻辑。

修复方案

1. 控制器代码修复

初始化$pesanan_details为空集合,确保无论$pesanan是否存在,变量都有合法值:

// 部分代码省略
public function check_out()
{
    $pesanan = Pesanan::where('user_id', Auth::user()->id)->where('status',0)->first();
    // 初始化空集合,避免变量未定义
    $pesanan_details = collect();
    
    if($pesanan) {
        $pesanan_details = PesananDetail::where('pesanan_id', $pesanan->id)->get();
    }

    return view('checkout.check_out', compact('pesanan','pesanan_details'));
}
// 其余代码省略

也可以用更简洁的三元表达式写法:

public function check_out()
{
    $pesanan = Pesanan::where('user_id', Auth::user()->id)->where('status',0)->first();
    $pesanan_details = $pesanan ? PesananDetail::where('pesanan_id', $pesanan->id)->get() : collect();

    return view('checkout.check_out', compact('pesanan','pesanan_details'));
}

2. 视图代码优化

增加空数据判断,提升页面友好性:

{{-- 部分代码省略 --}}
@if($pesanan_details->isNotEmpty())
    @foreach ($pesanan_details as $pesanan_detail )
    <tr>
        <td>{{ $no++ }}</td>
        <td>{{ $pesanan_detail->post->title }}</td>
        <td>{{ $pesanan_detail->jumlah }} Style</td>
        <td align="left">Rp. {{ number_format($pesanan_detail->post->harga) }}</td>
        <td align="left">Rp. {{ $pesanan_detail->jumlah_harga }}</td>
        <td>
            <form action="{{ url('check-out')}}/{{ $pesanan_detail->id }}" method="post">
                @csrf
                {{ method_field('DELETE') }}
                <button type="submit" class="btn btn-danger btn-sm"><i data-feather="trash-2"></i></button>
            </form>
        </td>
    </tr>
    @endforeach
@else
    <tr>
        <td colspan="6" align="center">暂无订单详情</td>
    </tr>
@endif
{{-- 其余代码省略 --}}

内容的提问来源于stack exchange,提问作者Daffa naufas Setiawan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:13:09