利用Mysql中的 的聚合函数 count(*) 可以实现这个功能
例如需要查询user表中village_id出现次数最多的记录,可以先按照group by village_id分组,用count算出分组里的条数,再按照count排序:
$o = User::where('add_type', 2) ->where('village_id', $name) ->select([ \DB::raw('count(*)'), \DB::raw("village_id") ]) ->groupBy('village_id') ->orderBy('count(*)') ->limit(1) ->get();
select village_id,count(*) from user group by village_id order by count(*) DESC limit 1