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

Laravel跨三表统计指定律师各执业领域案件数量的实现方法

实现代码

public function getCounselPracticeAreas(Request $request)
{
    $counsel_id = $request->route('counsel_id');
    // 批量获取该律师所有关联案件编号,仅执行1次查询
    $suitNumbers = CounselCase::where('counsel_id', $counsel_id)->pluck('suit_number');
    
    // 数据库层面直接完成匹配、分组统计,仅执行1次查询
    $statResult = AnalysisSc::whereIn('suitno', $suitNumbers)
        ->selectRaw('legal_head as name, count(*) as count')
        ->groupBy('legal_head')
        ->get();
    
    // 按要求组装返回结构
    $data = [
        'legal_head' => $statResult
    ];

    return response()->json([
        "message" => "successful",
        "data" => $data
    ]);
}

注意事项

  • 该方案仅执行2次SQL查询,避免了原写法循环查询产生的N+1性能问题,数据量大时优势明显
  • 写法兼容MySQL严格模式,不会出现分组字段不匹配的报错
  • 若存在counsel_cases中的案件编号在analysis_sc无匹配记录的情况,会自动忽略,如需统计空匹配项可额外增加逻辑处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:15:03