Laravel 将 SQL 转换为 Eloquent:按 sum() 排序
Posted
技术标签:
【中文标题】Laravel 将 SQL 转换为 Eloquent:按 sum() 排序【英文标题】:Laravel Convert SQL to Eloquent : order by a 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 中运行良好。感谢您的帮助:)
【问题讨论】:
【参考方案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,如果你发现这个解决方案有效,你能帮我投票给我的答案吗~?
会的!我已经改变了一些东西并且它起作用了。再次感谢您的帮助以上是关于Laravel 将 SQL 转换为 Eloquent:按 sum() 排序的主要内容,如果未能解决你的问题,请参考以下文章
将 PHP SQL 转换为 Laravel 查询构建器 [重复]
如何将复杂的 sql 查询转换为 laravel Eloquent