Laravel 3:加入并获得两张桌子的总和,有更好的方法吗?

时间:2013-04-25 11:19:51

标签: mysql laravel fluent eloquent

我正在尝试获取表的列,同时获取另一个相关表的总和(我正在使用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()方法只返回列的总和。这几乎是我在我的项目中编写流利和原始查询的地方,所以这让我想到如果我错过了什么。

提前致谢

1 个答案:

答案 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')

没有测试过这个,所以让我知道你是怎么做到的