【问题标题】:Laravel Convert SQL to Eloquent : order by a sum()Laravel 将 SQL 转换为 Eloquent:按 sum() 排序
【发布时间】:2021-11-01 05:24:50
【问题描述】:

我是 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 中运行良好。感谢您的帮助:)

【问题讨论】:

    标签: sql laravel eloquent


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我明白了:“找不到错误类'App\Http\Controllers\DB'”
      • 在文件顶部,包括use Illuminate\Support\Facades\DB;
      • 嗨@outik,如果你发现这个解决方案有效,你能帮我投票给我的答案吗~?
      • 会的!我已经改变了一些东西并且它起作用了。再次感谢您的帮助
      猜你喜欢
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 2014-01-08
      • 2015-05-20
      • 2015-02-24
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      相关资源
      最近更新 更多