实现一对多关联的受访者与住户表联动筛选功能技术问询
功能需求
现有两张具备一对多关联关系的数据表:住户表(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
相关产品推荐
相关产品推荐

