Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laravel Eloquent Query Builder - Summe mit Gruppe über Beziehung

In der generierten SQL müssen Sie die Spalte auswählen, nach der Sie gruppieren, und Sie müssen get() nach groupBy aufrufen andernfalls würden Sie groupBy aufrufen für die Sammlung, nicht für das Abfrage-Generator-Objekt. Sie sollten also in der Lage sein:

Transaction::selectRaw('transactionType.category, sum(amount) as amount')
->with('transactionType')
->groupBy('transactionType.category')
->get();

Oder weniger eloquent

DB::table('transaction')
->join(
    'transaction_type',
    'transaction_type.id',
    '=',
    'transaction.transaction_type_id'
)->selectRaw('transationType.category, sum(amount)')
->groupBy('transactionTyle.category')
->get();