mysql - Laravel 3 : Joining and getting sum of two tables, 有没有更好的方法?

标签 mysql laravel fluent eloquent

我正在尝试获取一个表的列,同时获取另一个相关表的总和(我使用的是 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/

相关文章:

mysql - 加入两个表,但仍然获得第一个表的完整数据

php - 在 Laravel::Eloquent 表中,如何将模型设置为从 View 中读取,但保存到表中?

javascript - 使用 jquery-slim 包找不到 jQuery 模块?

c# - NHibernate尝试为FK映射插入现有记录,但仅当int ID为0时

c# - 我应该使用哪个 Fluent WCF 框架(如果有)?

nhibernate - 无法转换类型为 'NHibernate.Collection.Generic.PersistentGenericBag to type ' System.Collections.Generic.List 的对象

php - 如何在更改其他数据时保持日期不变?

python - 当列为varchar时,django从mysql中选择最大字段

javascript - 如何使用 laravel ajax 发布和获取评论而不重新加载页面?

MySQL在匹配特定值时加入条件