Я хочу получить результаты из моей таблицы, упорядоченной по столбцу, значение которого повторяется в большинстве случаев сверху. Я использую Laravel - PullRequest
0 голосов
/ 07 мая 2018

Я хочу получить результаты из моей таблицы, упорядоченной по столбцу, значение которого повторяется в большинстве случаев сверху. Я использую Laravel

Данные хранятся как

  • Email City
  • abc@anc.com Дели
  • abc@njd.com Гургаон
  • bhy@jfl.com Ноида
  • jsd@juk.com Дели
  • hfk@jfj.com Гургаон
  • jfs@jfk.com Дели

Ожидаемый результат

  • Email City
    • abc@anc.com Дели
    • jsd@juk.com Дели
    • jfs@jfk.com Дели
    • abc@njd.com Гургаон
    • hfk@jfj.com Гургаон
    • bhy@jfl.com Ноида

Код, который я использую:

 $list = SubscriberList::select('subscriber_lists.*',DB::raw('COUNT(subscriber_lists.location) as locationCount'))
            ->where('status', config('constants.IS_NOT_ACTIVE'))
            ->orderBy('locationCount','DESC')
                ->paginate(config('constants.PAGE_LIMIT'));

Ответы [ 2 ]

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

Используйте это:

$list = SubscriberList::where('status', config('constants.IS_NOT_ACTIVE'))
    ->orderByRaw('(SELECT COUNT(*) FROM subscriber_lists sub WHERE city=subscriber_lists.city) DESC')
    ->paginate(config('constants.PAGE_LIMIT'));
0 голосов
/ 07 мая 2018

Это, безусловно, решит вашу проблему:

$result = DB::table('subscriber_lists')
                      ->select('email', 'city', DB::raw('count(*) as user_count'))
                      ->orderBy('city')
                      ->groupBy('email')
                      ->get();
          return $result->sortByDesc('user_count')->values();

Вы также можете написать код, используя класс модели:

$result = SubscriberList::select('email', 'city', DB::raw('count(*) as user_count'))
                      ->orderBy('city')
                      ->groupBy('email')
                      ->get();
          return $result->sortByDesc('user_count')->values();
...