【发布时间】:2021-12-05 08:56:09
【问题描述】:
美好的一天。我有一个已经使用 mysql 工作台测试和使用过的 sql 查询。但是,我想将它集成到我的 Laravel 应用程序中,这样我也可以在结果上使用 get() 和 paginate() 函数。 查询如下所示
SELECT applicable_areas.area
, applicable_areas.id as id
, count(stype) as supreme_court_cases
, count(atype) as appeal_court_cases
FROM applicable_areas
JOIN (
SELECT 1 AS atype, null AS stype, applicable_area_id, suitno FROM appeal_applicable_areas
UNION
SELECT null , 1 , applicable_area_id, suitno FROM supreme_applicable_areas
) AS area_types
ON area_types.applicable_area_id = applicable_areas.id
JOIN cp_cases_counsel
ON cp_cases_counsel.suitno = area_types.suitno
WHERE cp_cases_counsel.counsel_id = 38
GROUP BY applicable_areas.id
ORDER BY applicable_areas.area ASC;
在 Laravel 上
$practice_areas = DB::connection('mysql2')->table('applicable_areas')
->select(DB::raw("applicable_areas.area
, applicable_areas.id as id
, COUNT(stype) as supreme_court_cases
, COUNT(atype) as appeal_court_cases
FROM applicable_areas
JOIN (
SELECT 1 AS atype, null AS stype, applicable_area_id, suitno FROM appeal_applicable_areas
UNION
SELECT null , 1 , applicable_area_id, suitno FROM supreme_applicable_areas
) AS area_types
ON area_types.applicable_area_id = applicable_areas.id
JOIN cp_cases_counsel
ON cp_cases_counsel.suitno = area_types.suitno
WHERE cp_cases_counsel.counsel_id = 38
GROUP BY applicable_areas.id
ORDER BY applicable_areas.area ASC"))->get();
也试过了:
$practice_areas = DB::connection('mysql2')->table('applicable_area')
->join(DB::raw("SELECT 1 AS atype, null AS stype, applicable_area_id, suitno FROM appeal_applicable_areas
UNION
SELECT null , 1 , applicable_area_id, suitno FROM supreme_applicable_areas
) AS area_types"),
function($join){
$join->on('area_types.applicable_area_id', '=', 'applicable_areas.id');
})
->join('cp_cases_counsel', 'cp_cases_counsel.suitno','=','area_types.suitno')
->select('applicable_areas.id as id','applicable_areas.area','count(stype) as supreme_court_cases',
'count(atype) as appeal_court_cases')
->where('cp_cases_counsel.counsel_id',38)
->groupBy('applicable_areas.id')->get();```
I get an error with that statement. Please, is there a way to do this?
Thanks.
【问题讨论】:
-
你遇到了什么错误?
标签: php mysql sql laravel database