选择具有相等值的行

时间:2018-05-29 23:55:02

标签: php mysql laravel

在Laravel怎么办?

1)从user_id具有相等值的表行获取?

2)从此选定行返回some_amount值的总和

Table:
 - id;
 - user_id;
 - some_amount;

表中有大量证书,其中包含一些属于不同用户的金额。我需要查找属于一个用户的所有证书(一个用户可以拥有少量证书)并计算他从所有证书中获得的金额

2 个答案:

答案 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或查询构建器会很有帮助。