如何在Laravel 5.6中使用sum和group获取数据

时间:2018-04-17 16:08:42

标签: php laravel

我有拖表(捐款和会员)我想从会员ID表格doantion表中获取会员名表格会员表日期和金额,当我调用它给出的功能和错误时(SQLSTATE [42000] :语法错误或访问冲突:1055'donatensupport.donations.donation_id'不在GROUP BY中(SQL:选择donationsmembers,总和(金额)作为来自donations的{​​{1}}内部加入members的数量。donations = member_idmembers分组id))我谷歌它好几次,但我没有找到任何解决方案任何身体帮助提前感谢

控制器

member_id

捐赠模式

public function index() {
       $donation = DB::table('donations')
            ->join('members', 'donations.member_id', '=', 'members.id')
            ->select('donations.*','members.*', DB::raw('sum(amount) as amount'))
            ->groupBy('member_id')
            ->get();
       return view('donation.index', compact('donation'));
}

会员模型

public function member() {
    return $this->belongsTo('App\Member','member_id', 'id');
}

1 个答案:

答案 0 :(得分:1)

当您使用分组时,您无法使用捐款。*和成员。* 在这种情况下,您必须明确设置所需的列名称,并确保在group by子句中提及不涉及aggegation函数的列名称

   $donation = DB::table('donations')
        ->join('members', 'donations.member_id', '=', 'members.id')
        ->select('donations.member_id as member_id','members.name as name', DB::raw('sum(amount) as amount'))
        ->groupBy('member_id','name')
        ->get();
        return view('donation.index', compact('donation'));