我现在正在摸着这个。
我有什么。
$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的总和。但事实并非如此。
我无法弄清楚我做错了什么。
感谢所有帮助。
答案 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'
];