LeftJoin с групповым пропускает групповой - PullRequest
1 голос
/ 28 июня 2019

У меня есть пользователи, которых я хочу подсчитать, присоединившись к таблице слева для тренировок и получив по одной строке для каждого пользователя.Таким образом, пользователи, которые были только один раз в таблице тренировок или больше, но мне нужна только одна строка на user_id.

Это работает с использованием внутри исходного запроса SQL, но при попытке отформатировать его в laravel это не так:

$users->leftJoin('workout', function($join){
  $join->on('user.id', '=', 'workout.user_id')
  ->where('workout.user_id', '>', 1)
  ->groupBy('workout.user_id');
})

Это запрос, который работает как необработанный запрос:

select * from `users` 
left join (select workout.user_id, workout.id_holofit from workout where workout.user_id > 1  group by workout.user_id) workout ON workout.user_id = users.id

1 Ответ

1 голос
/ 28 июня 2019

Переместить группу за пределы вашего объединения.

$users->leftJoin('workout', function ($join) {
    $join->on('user.id', '=', 'workout.user_id')
    ->where('workout.user_id', '>', 1);
})
->groupBy('workout.user_id')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...