簡體   English   中英

在 Laravel 中使用原始 sql 查詢

[英]Use raw sql query in Laravel

再會。 我有一個 sql 查詢,我已經使用 mysql 工作台測試並使用過它。 但是,我想將它集成到我的 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.

$practice_areas = DB::select("SELECT 適用的區域.area , 適用的區域.id 作為id , COUNT(stype) 作為supreme_court_cases , COUNT(atype) 作為applied_court_cases FROM 適用的_areas JOIN ( SELECT 1 AS atype, null AS stype, 適用_area_id,suitno FROM上訴_applicable_areas UNION SELECT null , 1 , 適用_area_id,suitno FROMsupreme_applicable_areas ) AS area_types ON area_types.applicable_area_id =適用_areas.id JOIN cp_cases_counsel ON cp_cases_counsel.suitno = area_types.cpuses.cpuses_area_types.cpues_area_acsuitno ")->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM