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

Laravel中合并Eloquent查询结果及视图变量未定义问题求助

问题修复方案

1. 解决「Undefined variable $result」错误

控制器返回视图时,你直接传递了集合转成的数组,而Laravel视图需要接收键值对数组来传递变量。同时视图路径不需要前缀斜杠:

修改控制器里的返回语句:

// 原代码:return view('/entry_details',$result);
return view('entry_details', ['result' => $result]);

2. 修复数据关联错误(合并逻辑问题)

你当前的merge方法只是简单合并两个集合,无法按permit_type关联数据。正确做法是用数据库联查一次获取所有需要的数据,不需要手动合并:

替换控制器里的查询代码:

public function get_entry_details(){
    // 联查Permit表和Entry的统计结果,按permit_type关联
    $result = DB::table('Permit')
        ->leftJoin(DB::raw('(SELECT permit_type, SUM(duration) as total_duration FROM Entry WHERE status = "Approved" AND user_id = 1 GROUP BY permit_type) as entry_stats'), function($join) {
            $join->on('Permit.permit_type', '=', 'entry_stats.permit_type');
        })
        ->select(
            'Permit.permit_type',
            'Permit.max_allowed',
            // 用COALESCE处理没有对应Entry记录的情况,默认显示0
            DB::raw('COALESCE(entry_stats.total_duration, 0) as total_duration')
        )
        ->get();

    return view('entry_details', ['result' => $result]);
}

3. 修复视图语法错误

视图里的{{$data-max_allowed}}是语法错误,应该用对象属性访问符->:

<!-- 原代码:<td>{{$data-max_allowed}} </td> -->
<td>{{$data->max_allowed}} </td>

最终效果

对于User_ID=1的用户,最终会显示:

Permit TypeMax AllowedTotal Duration
Full248
Half122
Quarter62

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:25:58