LARAVEL orderBy DESC 在使用 groupBy 时不起作用

问题描述 投票:0回答:1

我想在 laravel 中使用 orderBy,但当我在那里使用 CAST 时它不起作用

    $this->adLists = ListingVisitor::with('listing')->selectRaw('CAST(sum(amount) as UNSIGNED) as total,listing_id,amount')->whereHas('listing.user',function($q){
        $q->where('id',Auth::user()->id);
    })->groupBy('listing_id')->orderBy('total','DESC')->paginate(10);

结果会是

136, 66, 1 ,5

实际上应该是 136, 66, 5, 1

我在 selectRaw 中使用了 CAST,但没有区别

laravel
1个回答
0
投票
$this->adLists = ListingVisitor::with('listing')
    ->selectRaw('sum(amount) as total, listing_id')
    ->whereHas('listing.user', function($q) {
        $q->where('id', Auth::user()->id);
    })
    ->groupBy('listing_id')
    ->orderBy(DB::raw('sum(amount)'), 'DESC')
    ->paginate(10)

我认为没有必要铸造它。当您进行求和时,它已经以数字格式返回您。相反,请尝试使用 SUM 函数进行排序。它会给你预期的输出。

© www.soinside.com 2019 - 2024. All rights reserved.