Получение самых последних и уникальных значений из базы данных с Laravel - PullRequest
0 голосов
/ 06 апреля 2020

новичок в сообществе, хотел бы поблагодарить всех, кто внес свой вклад!

Сейчас мне нужно решение, чтобы получить значение «Последние и отличительные» из таблицы.

Моя таблица называется ' транзакции ', которая имеет 'id', 'value', 'remarks', 'memberId (FK)', 'creation_at' .

ID | amount |  memberId | created_at
 1 |  101   |  00001    | 22-04-2018
 2 |  102   |  00002    | 22-04-2018
 3 |  103   |  00002    | 22-04-2018
 4 |  104   |  00001    | 24-04-2018 (latest)
 5 |  105   |  00002    | 25-04-2018 (latest)
 6 |  106   |  00003    | 25-04-2018 (latest)

Мой ожидаемый результат -

ID | amount |  memberId | created_at
 4 |  104   |  00001    | 24-04-2018
 5 |  105   |  00002    | 25-04-2018
 6 |  106   |  00003    | 25-04-2018

Мой код

      $transactions = Transaction::select('id', 'memberId', 'amount', DB::raw('max(created_at) as latest_depo'), 'created_at', 'amount')
   ->groupBy('memberId')
   ->orderBy('latest_depo' , 'desc')
   ->paginate(50);

, но я не получаю Последнюю Строку каждого участника. Я думаю, что это связано с группировкой значений. Заранее спасибо!

1 Ответ

0 голосов
/ 07 апреля 2020

Как насчет:

$transactions = Transaction::latest()
    ->groupBy('memberId')
    ->distinct('memberId')
    ->select('id','amount','memberId','created_at')
    ->paginate(50);

Редактировать: я добавил groupBy() к вышеуказанному запросу. Если groupBy () выдает ошибку, проверьте конфигурацию базы данных , как описано здесь .


Примечание. Если вы используете Laravel Eloquent взаимосвязи, ваш столбец memberId должен вероятно, по имени member_id.

...