You cannot do a group by on things that you dont select as well
$query = DB::table('campaigns')
->join('categories', 'campaigns.category_id', '=', 'categories.id')
->leftJoin('donations', 'campaigns.id', '=', 'donations.campaign_id')
->select(
'campaigns.id',
'campaigns.title',
'categories.name',
'campaigns.status',
'campaigns.user_id',
DB::raw('SUM(donations.donation_amount) as donation_amount')
)
->groupBy([
'campaigns.id',
'campaigns.title',
'categories.name',
'campaigns.status',
'campaigns.user_id',
]);
or
$query = DB::table('campaigns')
->join('categories', 'campaigns.category_id', '=', 'categories.id')
->leftJoin('donations', 'campaigns.id', '=', 'donations.campaign_id')
->select(
'campaigns.id',
DB::raw('SUM(donations.donation_amount) as donation_amount')
)
->groupBy('campaigns.id');