Laravel 5 如何将sum()与join和group by语句一起使用

Laravel 5 如何将sum()与join和group by语句一起使用,laravel-5,sum,Laravel 5,Sum,我想按货币计算总金额 我在SQL中是这样做的 select sum(total),currencies.currency_symbol from invoices join(currencies) where(invoices.currency_id = currencies.id) group by(currency_id) $sum = Invoice::sum('total') ->select('currency_symbol')

我想按货币计算总金额

我在SQL中是这样做的

select sum(total),currencies.currency_symbol from invoices
join(currencies)
where(invoices.currency_id = currencies.id)
group by(currency_id)
$sum = Invoice::sum('total')
              ->select('currency_symbol')
              ->join('currencies','invoices.currency_id','=','currencies.id')
              ->groupBy('currency_id');
return response()->json($sum);
我在拉拉维尔试过这样

select sum(total),currencies.currency_symbol from invoices
join(currencies)
where(invoices.currency_id = currencies.id)
group by(currency_id)
$sum = Invoice::sum('total')
              ->select('currency_symbol')
              ->join('currencies','invoices.currency_id','=','currencies.id')
              ->groupBy('currency_id');
return response()->json($sum);
但它抛出了一个错误

Symfony\Component\Debug\Exception\fatalthrowable错误:调用字符串上的成员函数
select()


请给我一个解决方案

我认为您必须使用selectRaw,因为我认为sum和select的组合不起作用,您可以使用其中一个。您可以尝试以下方法:

$sum = Invoice::selectRaw('currency_symbol, sum(total) as sum')
              ->join('currencies','invoices.currency_id','=','currencies.id')
              ->groupBy('currency_id');
return response()->json($sum);

我认为你必须使用selectRaw,因为sum和select的组合我认为不起作用,你可以使用其中一个。您可以尝试以下方法:

$sum = Invoice::selectRaw('currency_symbol, sum(total) as sum')
              ->join('currencies','invoices.currency_id','=','currencies.id')
              ->groupBy('currency_id');
return response()->json($sum);

尝试将sum()添加到末尾而不是开始。您的错误表明您在尝试选择()之前已经计算了总和。您是否尝试过检查
Invoice::sum
返回的内容?您使用的是哪种laravel版本?我使用了laravel 5.8I尝试过Invoice::sum,但它返回总计列的总和,但我希望总和作为货币明智地尝试添加总和()到最后而不是开始。您的错误表明您在尝试选择()之前已经计算了总和。您是否尝试过检查
Invoice::sum
返回的内容?您使用的是哪种laravel版本?我使用laravel 5.8I尝试过Invoice::sum,但它返回总计列的总和,但我希望总和是货币