我正在尝试获取表的列,同时获取另一个相关表的总和(我正在使用MySQL数据库)。表是优势和转换,优势有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()
方法只返回列的总和。这几乎是我在我的项目中编写流利和原始查询的地方,所以这让我想到如果我错过了什么。
提前致谢
答案 0 :(得分:3)
您可以通过流畅的方式调用聚合方法
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')
没有测试过这个,所以让我知道你是怎么做到的