我有“用户”表,该表具有under_reference
列,该列代表此用户的引用人。
我想通过最高under_reference
数来订购用户。如何根据参考进行计数
$data['user'] = User::orderBy('id','DESC')->get();
答案 0 :(得分:1)
$data['user'] = User::select(DB::raw('count(*) as total'))
->groupBy('under_reference')
->orderBy('under_reference','DESC')
->get();
以下是可以帮助您的查询。您可以得到一个人推荐的用户总数,并可以通过引用进行订购。
答案 1 :(得分:0)
在这种情况下使用分组依据,并对其进行排序。这是一个例子。
$query = [
'name',
'email',
// store count of under_reference as total
DB::raw('count(under_reference) as total')
];
$sorted = User::groupBy('name', 'email')
->select($query)
->orderBy('total', 'desc') // remember total before, sort it by desc or asc
->get();
您可以参考laravel文档here on raw expressions
name
和email
只是一个例子,因为您没有向我们显示表的列的外观。但是您应该有一个大概的主意
答案 2 :(得分:0)
您可以通过这种方式尝试也可以。
$data['user'] = DB::select('SELECT *` FROM `user` ORDER BY
CAST(`under_reference` AS decimal) DESC');
您可以在查询中将数据库列varchar强制转换为十进制。
答案 3 :(得分:0)
尝试一下:
$user_info = DB::table('users')
->select('under_reference',DB::raw('count(under_reference) as ur'))
->groupBy('under_reference')
->orderBy('ur','DESC')
->get();
答案 4 :(得分:0)
我使用Integer创建了另一列totalref。我编写了逻辑,以用推荐奖金然后通过totalref命令来更新此列。它就像魔术一样工作