Получить количество дубликатов в определенном поле в Laravel - PullRequest
0 голосов
/ 15 мая 2018

У меня есть список, который остается относительно коротким, но я бы хотел, чтобы он функционировал так:

В настоящий момент я получаю список манифестов, у которых originRemitStatus имеет значение null (то есть эта конкретная запись никогда не отправлялась) с помощью следующего в моем контроллере:

$unsentManifests = Carrier_Manifest::whereNull('originRemitStatus')->get();

Я вытащил их в простой список, и сразу видно, что есть дубликаты некоторых записей. Теперь, хотя это беспокоит меня, это не фокус на данный момент.

То, что я хотел бы сделать, это получить количество записей, которые являются дубликатами с одинаковым manifestNumber, но на этой временной базе, которая отсчитывает от количества полей originRemitStatus, установленных на 1, на основе оригинальная группа $unsentManifests.

// Те же данные и ожидаемые результаты //

Из выборки:

manifestNumber: 1234
originRemitStatus: null

manifestNumber: 1234
originRemitStatus: null

manifestNumber: 1234
originRemitStatus: 1

manifestNumber 9876
originRemit Status: null

manifestNumber 9876
originRemit Status: null

manifestNumber 4567
originRemit Status: null

manifestNumber 4567
originRemit Status: 1

Возвращенные результаты:

  • 1234 (1)
  • 9876 (0)
  • 4567 (1)

1 Ответ

0 голосов
/ 17 мая 2018

Попробуйте это:

Carrier_Manifest::select('manifestNumber')
    ->selectRaw('SUM(IF(originRemitStatus = 1, 1, 0)) count')
    ->groupBy('manifestNumber');
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...