我正在尝试获取一个表的列,同时获取另一个相关表的总和(我使用的是 MySQL 数据库)。表格是 Advantages 和 Conversions,Advantages 有一个要加入的 conversionID
列。它们都是通过模型相关的。我首先尝试使用 Eloquent 方法来实现这一点,但我无法成功,所以我想出了这个 Fluent 方法,它工作正常:
DB::table('conversions')
->join('advantages','advantages.conversionID','=','conversions.id')
->where('conversions.used','=',0)
->group_by('conversions.id')
->get(array(
'conversions.*',
DB::raw('SUM(advantages.point) as totaladvantage')
))
我想查询描述了列的方式以及我想要实现的目标。
所以我的问题是:是否有更有效的方法来实现这一点?为此使用 DB::raw
对我来说似乎很奇怪,sum()
方法只返回列的总和。这几乎是我在我的项目中同时编写流畅查询和原始查询的唯一地方,所以这让我想到我是否遗漏了什么。
提前致谢
最佳答案
可以通过fluent调用聚合方法
DB::table('conversions')
->join('advantages','advantages.conversionID','=','conversions.id')
->where('conversions.used','=',0)
->group_by('conversions.id')
->select(array(
'conversions.*',
'advantages.point as totaladvantage')
)
->sum('advantages.point')
还没有测试过这个,所以让我知道你的进展情况
关于mysql - Laravel 3 : Joining and getting sum of two tables, 有没有更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16213372/