Mysql Raw Count Only - PullRequest
       5

Mysql Raw Count Only

0 голосов
/ 29 августа 2018

Я использую PHP и Laravel Framework для моего проекта.

Над кодом отлично работает

$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');

Теперь подсчитываю все значения в столбце оговорки

Как я могу редактировать

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

этот код

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Если вы хотите, чтобы вся сумма dolar не зависит от подтверждения, Вы можете использовать оператор case:

\DB::raw('sum(case when reservations.confirmation=1 then 1 else 0 end) as confirmation')

или подзапрос:

\DB::raw('(Select count(*) FROM reservations WHERE user_id = users.id AND confirmation=1) as confirmation')
0 голосов
/ 29 августа 2018

Вы пытались видеть в https://laravel.com/docs/5.6/queries#joins в разделе «Расширенные условия объединения», вы можете добавить условие в функцию присоединения

$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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...