如何在laravel中不分组的orderby()计数

时间:2019-01-23 09:26:17

标签: php laravel

我有“用户”表,该表具有under_reference列,该列代表此用户的引用人。

我想通过最高under_reference数来订购用户。如何根据参考进行计数

$data['user'] = User::orderBy('id','DESC')->get();

5 个答案:

答案 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

nameemail只是一个例子,因为您没有向我们显示表的列的外观。但是您应该有一个大概的主意

答案 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命令来更新此列。它就像魔术一样工作