首页 > 解决方案 > 我想从我的表中获取结果,按列排序,其中大部分时间重复值在顶部。我正在使用 laravel

问题描述

我想从我的表中获取结果,按列排序,其中大部分时间重复值在顶部。我正在使用 laravel

数据存储为

预期结果

我正在使用的代码是

 $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'));

标签: phplaraveleloquentsql-order-by

解决方案


这肯定会解决您的问题:

$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();

您也可以使用 Model 类进行这样的编码:

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

推荐阅读