Laravel получить "уникальный" ряд из mysql - PullRequest
0 голосов
/ 14 января 2020

У меня есть специальный сценарий для извлечения «уникальной» строки.

Допустим, база данных похожа на ниже

| id | userid | value | others  |
|----|--------|-------|---------|
| 1  | 111    | 10    | string1 |
| 2  | 112    | 30    | string2 |
| 3  | 112    | 30    | string3 |
| 4  | 113    | 50    | string4 |

, чего я хочу добиться, это выбрать уникальные строки на основе «идентификатор пользователя», поэтому я могу суммировать все значения.

ожидаемая строка вывода может быть либо id: 1 2 4, либо 1 3 4 (оба приемлемы для этого особого случая, потому что same id guarantees same value или вообще получите только одну строку из этой строки с таким же userid.), поэтому сумма будет 90.

Примечание: DB расширен с Eloquent\model

Мой старый подход заключается в том, чтобы получить DB :: unique ('userid'); затем для каждого идентификатора пользователя DB :: where ('userid', $ id) -> value ('value') добавьте результат в сумму; Я просто верю, что может быть лучший подход.

1 Ответ

0 голосов
/ 14 января 2020

Существует Illuminate\Support\Facades\DB в Laravel, он может вернуть Query Builder . Не рекомендуется использовать модель с именем DB.

Так что просто измените другое имя.

Кстати, для Eloquent \ Model вы можете использовать groupBy и sum тоже:

Model::groupBy('user_id')->sum('value');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...