在Laravel怎么办?
1)从user_id
具有相等值的表行获取?
2)从此选定行返回some_amount
值的总和
Table:
- id;
- user_id;
- some_amount;
表中有大量证书,其中包含一些属于不同用户的金额。我需要查找属于一个用户的所有证书(一个用户可以拥有少量证书)并计算他从所有证书中获得的金额
答案 0 :(得分:1)
如果您使用模型:
ModelName::where('user_id', 1)->sum('some_amount')
如果您正在使用查询构建器:
\DB::table('table_name')->where('user_id', 1)->sum('some_amount');
这是查询构建器的文档:
https://laravel.com/docs/5.6/queries
模特:https://laravel.com/docs/5.6/eloquent 模型关系:https://laravel.com/docs/5.6/eloquent-relationships 馆藏:https://laravel.com/docs/5.6/collections
答案 1 :(得分:1)
鉴于您没有寻找针对单个用户进行查询的解决方案,听起来您想要由用户进行分组并对证书的结果求和。
@PhilCross的答案非常接近,您只需要修改它以添加group子句并删除where条件。像这样:
ModelName::groupBy('user_id')->sum('some_amount');
或
\DB::table('table_name')->groupBy('user_id')->sum('some_amount');
通常是雄辩的,或者查询构建器将有一个与在原始SQL中如何执行此操作相关的方法。 我发现写出或思考如何编写原始SQL然后慢慢填写其中的eloquent或查询构建器会很有帮助。