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

实现一对多关联的受访者与住户表联动筛选功能技术问询

功能需求

现有两张具备一对多关联关系的数据表:住户表(Household)与受访者表(Respondent),一个住户对应多个受访者。
需实现功能:点击筛选按钮选中受访者表中的某条记录后,在住户表中展示该受访者所属的住户数据,即基于选中的受访者筛选出对应的住户信息。

控制器代码
public function 获取筛选数据(Request $request)
{
    $所有年龄选项 = 年龄::all();
    $所有身体状况选项 = 身体状况::all();
    $所有社会健康决定因素 = 社会健康决定因素::all();
    $所有社会健康分类 = 社会健康分类::all();
    $所有性别选项 = 性别::all();
    $所有疾病选项 = 疾病::all();
    $所有疫苗选项 = 疫苗::all();
    $所有环境危害选项 = 环境危害::all();
    $所有社区片区选项 = 社区片区::all();
    $所有住户数据 = 住户户主::with('分类住户.社会健康分类')->get();
    
    $选中疾病 = $request->input('disease');
    $起始时间 = $request->input('start');
    $结束时间 = $request->input('end');
    
    $筛选后的受访者 = 受访者::where('disease_id', $选中疾病)
        ->when($起始时间 && $结束时间, function ($query) use ($起始时间, $结束时间) {
            $query->whereBetween('created_at', [$起始时间, $结束时间]);
        })
        ->get();

    $选中受访者ID = $request->respondents;
    $选中受访者 = 受访者::find($选中受访者ID);

    if ($选中受访者) {
        $对应住户ID = $选中受访者->household_head_id;
        $对应住户数据 = 住户户主::find($对应住户ID);

        return view('地图页', compact('对应住户数据'));
    } else {
        return redirect()->back()->with('error', '未找到该受访者');
    }
    
    return view('地图页',
        compact('所有住户数据', '所有社会健康决定因素', '所有社会健康分类', '所有疾病选项', '所有疫苗选项', '所有环境危害选项', '筛选后的受访者', '所有年龄选项',
            '所有社区片区选项', '所有身体状况选项', '所有性别选项'));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:52:48