Laravel将SQL转换为Eloquent:按sum()排序



我是Eloquent和Laravel的新手。我尝试了多种语法,但我找不到一种方法使它工作。下面是我想转换的查询:

SELECT category, SUM(amount) AS `total_cat` FROM expenses GROUP BY category ORDER BY `total_cat` DESC

这是我的"费用"模型。表:

class Expense extends Model
{
use HasFactory;
protected $fillable = ['date', 'title', 'amount', 'category'];
}

这里的想法是获得每个类别的费用总和(不需要别名)。该查询在纯PHP中工作得很好。谢谢你的帮助:)

这可能是解决方案,我还没有测试,但它似乎符合雄辩函数中的理论

Expense::select([
'category',
DB::raw('SUM(category) AS category_sum')
])
->groupBy('category')
->orderBy('total_cat', 'desc')
->get()

下面是解决我最初问题的方法:

Expense::select([
'category',
DB::raw('SUM(amount) AS total_cat') ])
->groupBy('category')
->orderBy('total_cat', 'desc')
->get(); 

最新更新