Laravel有一个+ group_by,得到总和

时间:2016-06-13 09:05:04

标签: laravel

我现在正在摸着这个。

我有什么。

$entries = Meta::whereIn('settlement_id', [1])->groupBy('client_id')->get();

Meta::model()与其他表有一个hasOne关系,在我的示例中有一个Sport表。在我的数组中有一个属性,我可以实现我想要的。

所以在循环中,我的字段可用$entry->Sport->amount,这非常有效。

我需要什么。

$entries = Meta::whereIn('settlement_id', [1,2,3])->groupBy('client_id')->get();

现在当我用多个id扩展我的数组时,我希望$entry->Sport->amount返回所有id的总和。但事实并非如此。

我无法弄清楚我做错了什么。

感谢所有帮助。

2 个答案:

答案 0 :(得分:0)

你的hasOne关系意味着每个 Meta 都会有一个单独的 Sport ,所以当你循环$entries时,每个$entry->Sport都会有金额与当前 Meta 相关,而不是所有这些的总和。

如果您希望获得特定 Meta 运动金额的总和,则可以更轻松地从 Sport 模型进行查询,这样的事情(我不知道你的关系是如何设置所以这只是一个例子):

Sport::whereIn('meta_id', [1,2,3])->sum('amount');

答案 1 :(得分:0)

多数民众赞成正确,有没有办法实现这一目标?通过将hasOne更改为其他内容?

我不想查询每个特定的相关元数据表。

public function Sport() { return $this->hasOne('App\Sport', 'settlement_meta_id'); }

我的数据库表Sport看起来像这样:

protected $fillable = [ 'settlement_meta_id', 'bet', 'payout' ];