2016-12-14 107 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() –