ранжировать запрос в laravel из одной таблицы данных

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

Пример того, что я так далеко от запроса

 User_id | race_id | recorded_time | stroke |
__________________________________________
2    |    2    |     10.03     |  fly   |
____________________________________________
1    |    3    |     12.98     |  fly   |
____________________________________________
2         3          13.58     |  fly   |

Вот код, который дает мне этот результат

  $query->where('race_history.stroke', '=', $stroke)
->orderBy('recorded_time', 'ASC')->get();

Это то, что я хочу вернуть

 User_id | race_id | recorded_time | stroke |
__________________________________________
2    |    2    |     10.03     |  fly   |
____________________________________________
1    |    3    |     12.98     |  fly   |
____________________________________________

Я попробовал код ниже, но это не занимает самое быстрое время записи

$query->where('stroke', '=', $stroke)
->orderBy('recorded_time', 'ASC')
->groupBy('user_id')->get();

Но вместо этого производит это

 User_id | race_id | recorded_time | stroke |
__________________________________________
1    |    3    |     12.98     |  fly   |
____________________________________________
2    |    3    |     13.58     |  fly   |
____________________________________________

Таким образом, его группировка по user_id, НО не занимает самое быстрое время записи

Я пробовал так много способов, как кто-нибудь может помочь, это необработанный запрос, чтобы получить то, что я хочу, я бы использовал это, но расстояние AND не нравится ..

$total = DB::select(DB::raw('
SELECT *, min(recorded_time) as time
FROM race_history
WHERE stroke = "' . $stroke . '" AND distance="' . $distance . '"GROUP BY user_id
ORDER BY min(recorded_time) ASC
'));

0

Решение

Вот необработанный запрос, так как я не знаю синтаксис laravel

SELECT `user_id`, `race_id`, min(`recorded_time`) AS `recorded_time`, `stroke`
FROM `race_history`
WHERE `stroke` = 'fly'
GROUP BY `user_id`
ORDER BY `recorded_time` ASC
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]