2016-12-14 116 views
0

我需要一個以下的手。Laravel:原始查詢設置

我有一個plates表,其中包含project_idequipment_status_code_id等。

這是我想要實現的。

我想查詢表格並像這樣獲取結果。

---------------------------------------------------- 
| project | Equipment Status code | Number of plates 
----------------------------------------------------- 
| Test |  Cleaning    |   9 
| Test#2 |  Not Cleand   |   3 
|   
----------------------------------------------------- 

做這樣的事情

return DB::table('plates') 
    ->select('project_id', 'equipment_status_code_id', DB::raw('count(*) as total')) 
    ->groupBy('project_id','equipment_status_code_id') 
    ->pluck('project_id','equipment_status_code_id'); 

回報

{ 
    "13": 31, 
    "30": 3, 
    "": 3 
} 

但這是不夠的。我想添加另一個層,就像上面的例子中的列名一樣。

什麼是實現這一目標的最佳方式是什麼?

注意:我知道我需要查詢模型來獲取狀態代碼的名稱而不是id's

謝謝你的時間!

+0

加入'equipment_status_code_id'與表這就是有身份的名稱,並選擇名稱,而不是ID – Vuldo

+0

@Vuldo我需要總板爲好。你介意給我一個包含項目,狀態代碼和N個板塊的例子。 – user3641381

回答

0

嘗試此查詢

return DB::table('plates') 
    ->join('project', 'plates.project_id', '=', 'project.id') 
    ->join('equipment', 'plates.equipment_status_code_id', '=', 'equipment.id') 
    ->select('plates.*', 'project.name', 'equipment.equipment_code', DB::raw('count(plates.id) as no_of_plates')) 
    ->groupBy('plates.project_id','plates.equipment_status_code_id') 
    ->get(); 
0

您可以DB::raw("Your SQL statement here");嘗試運行這樣就像你在寫SQL你可以編寫自己的說法。

我在模態例如:

public static function getMaxOrder() 
    { 

     $orderno = DB::select(DB::raw('select order_no from orders where id = (select max(`id`) from orders)')); 
     return $orderno[0]->order_no; 
    } 
+0

當我們已經使用DB :: select()時,不需要使用DB :: raw() –