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

如何在Laravel 8中转换含双统计计数的SQL查询且不使用switch case

Laravel 8 查询构造器实现对应SQL转换

以下是将你提供的SQL转换为Laravel 8查询构造器的代码,完全匹配原SQL的关联逻辑、字段选择和统计需求:

use Illuminate\Support\Facades\DB;

$results = DB::table('compliance_visits')
    ->join('facilities', 'compliance_visits.facility_id', '=', 'facilities.facility_id')
    ->join('beneficiaries', 'compliance_visits.beneficiary_id', '=', 'beneficiaries.beneficiary_id')
    ->join('districts', 'facilities.district_id', '=', 'districts.district_id')
    ->join('talukas', 'facilities.taluka_id', '=', 'talukas.taluka_id')
    ->select(
        'districts.district_name as District',
        'facilities.facility_name as Name_Of_Health_Facility',
        DB::raw('COUNT(beneficiaries.name) as No_Of_Registered_Client'),
        DB::raw('COUNT(compliance_visits.facility_id) as Compliance_visitors')
    )
    ->groupBy('facilities.facility_id')
    ->get();

关键对应说明:

  • 用DB::table()指定主表compliance_visits,完全对应原SQL的FROM子句
  • 多次调用join()实现所有INNER JOIN关联,关联条件与原SQL完全一致
  • 通过select()选择所需字段,统计计数用DB::raw()直接映射原SQL的COUNT逻辑,无需switch case
  • 用groupBy()按facilities.facility_id分组,最后get()执行查询并返回结果集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:50:43