首页 > 解决方案 > Mysql 仅原始计数

问题描述

我在我的项目中使用 PHP 和 Laravel 框架。

上面的代码完美运行

$users = User::select([
            'users.id',
            'users.name',
            'users.company',
            'users.country',
            'users.city',
            'users.email',
            'users.created_at',
            \DB::raw('SUM(reservations.dolar) as dolar'),
            \DB::raw('count(reservations.confirmation) as confirmation'),
        ])->join('reservations','reservations.user_id','=','users.id')
        ->groupBy('reservations.user_id');

现在计算所有reservation.confirmation 列,但我只想计算reservation.confirmation 列值1

我如何编辑

\DB::raw('count(reservations.confirmation) as confirmation'),

这段代码

标签: phpmysqllaravel

解决方案


您是否尝试在“高级连接子句”部分的https://laravel.com/docs/5.6/queries#joins中查看,您可以在 Join 函数中添加条件

$users = User::select([
        'users.id',
        'users.name',
        'users.company',
        'users.country',
        'users.city',
        'users.email',
        'users.created_at',
        \DB::raw('SUM(reservations.dolar) as dolar'),
        \DB::raw('count(reservations.confirmation) as confirmation'),
    ])->join('reservations', function ($join) {
                              $join->on('reservations.user_id', '=', 'users.id')
                                   ->where('reservations.confirmation', '=', 1);
    })->groupBy('reservations.user_id');

推荐阅读