我正在使用Laravel 5.3,目前我正在制作一个包含多个部分的帐单。这些部分从1个表中返回所有数据,它们之间唯一的区别是“类型”列,它标识它们将被分类到它们的适当部分。对于每个部分,我调用4个查询。
目前,共有8个部分。 8乘4,总共32个SQL查询。
一个部分有4个这样的查询:
$records['data'] = Model::where('type', 'x1')->get();
$records['total_cost'] = Model::where('type', 'x1')->sum('cost');
$records['count'] = Model::where('type', 'x1')->count();
$records['total_duration'] = Model::where('type', 'x1')->sum('duration');
我对每个部分重复同样的事情。我不相信这是正确的方法。
我不确定从哪里开始。
答案 0 :(得分:0)
简单地说:)
$data = Model::groupBy('type')->get();
$totalCost = $count = $totalDuration = [];
$types = ['x1', 'x2'];
foreach($types as $type) {
$totalCost[$type] = $data[$type]->sum('cost');
$count[$type] = $data[$type]->count();
$totalDuration[$type] = $data[$type]->sum('duration');
}
仅一个查询:)