我需要一只手以下。
我有一个plates
表,其中包含project_id
和equipment_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 :(得分: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();
答案 1 :(得分: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;
}