Получите DISTINCT id пользователей и найдите MAX их столбцов, затем UPDATE, LARAVEL - PullRequest
0 голосов
/ 16 ноября 2018

Что я хочу сделать, это distinct id на основе значения max соответствующего столбца и затем update столбца соответственно.

Например

id  |  name  |  total  |  description  |  updateThis

1   |  john  |  100    |  example      |      0
2   |  dave  |  300    |  example      |      0  
2   |  johno |  500    |  example      |      0
4   |  derik |  900    |  example      |      0
5   |  Sam   |  1000   |  example      |      0
4   |  bool  |  12200  |  example      |      0
1   |  john  |  1200   |  example      |      0
5   |  john  |  300    |  example      |      0

Я хочу, чтобы это выглядело так:

id  |  name  |  total  |  description  |  updateThis

1   |  john  |  1200   |  example      |      1
2   |  johno |  500    |  example      |      1
4   |  bool  |  12200  |  example      |      1
5   |  Sam   |  1000   |  example      |      1

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

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете использовать это:

$rows = DB::table('table')
    ->select('id', DB::raw('max(total) as total'))
    ->groupBy('id')
    ->get();
foreach($rows as $row) {
    DB::table('table')
        ->where('id', $row->id)
        ->where('total', $row->total)
        ->update(['updateThis' => 1]);
}
...