我想从我的表中获取结果,该列的排序依据是顶部大部分时间重复的值.我正在使用拉拉维尔



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

数据存储为

  • 电子邮件城市
  • abc@anc.com 德里
  • abc@njd.com 古尔冈
  • bhy@jfl.com 诺伊达
  • jsd@juk.com 德里
  • hfk@jfj.com 古尔冈
  • jfs@jfk.com 德里

预期成果

  • 电子邮件城市
    • 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'));

这肯定会解决您的问题:

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

使用这个:

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

相关内容

最新更新