W wygenerowanym SQL musisz wybrać kolumnę, według której grupujesz, i musisz wywołać get() po groupBy
inaczej dzwoniłbyś do groupBy
w kolekcji, a nie w obiekcie konstruktora zapytań. Więc powinieneś być w stanie zrobić:
Transaction::selectRaw('transactionType.category, sum(amount) as amount')
->with('transactionType')
->groupBy('transactionType.category')
->get();
Lub mniej elokwentny
DB::table('transaction')
->join(
'transaction_type',
'transaction_type.id',
'=',
'transaction.transaction_type_id'
)->selectRaw('transationType.category, sum(amount)')
->groupBy('transactionTyle.category')
->get();