Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Laravel 5.6中使用sum和group by获取数据_Php_Laravel - Fatal编程技术网

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

Php 如何在Laravel 5.6中使用sum和group by获取数据,php,laravel,Php,Laravel,我有两个表(捐赠和成员),当我调用捐赠表提供的函数时,我想从捐赠表中获取成员名称、成员表日期和金额,并使用group by member id从doantion table获取,错误如下(SQLSTATE[42000]:语法错误或访问冲突:1055'donatensupport.GATIONS.GATIONATION_id'不在group by by中(SQL:选择捐赠,成员,将捐赠内部加入成员中的金额合计(金额)在捐赠上选择成员id=成员分组依据成员id)我在谷歌上搜索了好几次,但我没有找到任

我有两个表(捐赠和成员),当我调用捐赠表提供的函数时,我想从捐赠表中获取成员名称、成员表日期和金额,并使用group by member id从doantion table获取,错误如下(SQLSTATE[42000]:语法错误或访问冲突:1055'donatensupport.GATIONS.GATIONATION_id'不在group by by中(SQL:选择
捐赠
成员
,将
捐赠
内部加入
成员
中的金额合计(金额)在
捐赠
上选择
成员id
=
成员
分组依据
成员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');
}
public function donation() {
    return $this->hasMany('App\Member');
}
会员模式

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

当您使用分组方式时,不能在选择中使用捐赠。*和成员。*。
在这种情况下,必须明确地设置所需的列名,并确保GROUPBY子句中提到了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'));

当您使用分组方式时,不能在选择中使用捐赠。*和成员。*。
在这种情况下,必须明确地设置所需的列名,并确保GROUPBY子句中提到了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'));

我同意最好是用sql而不是php来计算尽可能多的数据。但是,我想提到的是,laravel集合支持类似的操作,sql和php之间的界限可能会以一种非常有表现力的方式变得模糊,这对几个月后的开发人员或下一个开发人员来说都是很容易理解的当我添加日期列时,它也会显示日期,但结果不是我想要的结果如果错误消失了,那么您已经找到了错误的原因..对于“您想要的结果”似乎我的另一个问题是我的捐赠表中的日期列,所以当我添加日期列时,如何用金额和名称获取日期。总和不起作用。你有错误吗?你的问题中有相同的错误吗?我同意最好用sql而不是php计算尽可能多的数据。不过,我想提到的是,laravel collections支持类似的操作,sql和php之间的界限可能会以一种非常有表现力的方式变得模糊,这在几个月后或下一位开发人员看来都很容易理解。根据数据量的不同,集合可能更直接,更易于维护。当我添加日期列时,它也会显示日期,但结果不是我所看到的如果错误消失,则您已找到错误的原因。.“您想要的结果”似乎我的另一个问题是我的捐赠表中的日期列,所以当我添加日期列时,如何用金额和名称获取日期总和不起作用你有错误吗?你的问题中有相同的错误吗?你为什么不使用模型?你为什么不使用模型?