我不知道如何解决这个问题,我需要从表中获取数据,并将每个字段的值加在一起,其中ID是相同的。
我尝试过的事情
$users = User::all();
$array = [];
foreach($users as $user)
{
array_push($array, [$user->account_id => $user->amount]);
}
除此之外,我不太确定如何去做!这是我从数据库中提取的数据。
0: {1: 100.00}
1: {1: 100.00}
2: {2: 100.00}
3: {2: 100.00}
这是我想要的输出
0: {1: 200.00}
1: {2: 200.00}
这就是我所需要的一切我觉得它非常简单,但我不知道,任何帮助和指导将不胜感激,将提供所需的任何进一步信息。
答案 0 :(得分:1)
尝试这种方式:
<?php
User::groupBy('account_id')
->selectRaw('sum(amount) as sum, account_id')
->lists('sum','account_id');
修改强>
由于->lists()
现已在laravel 5.2+中弃用,现在应为->pluck()
,仅供参考
答案 1 :(得分:1)
如果您想使用PHP进行分组并对其求和,请尝试:
$users = array(
array(
"account_id" => 1,
"amount" => 100
),
array(
"account_id" => 1,
"amount" => 100
),
array(
"account_id" => 2,
"amount" => 100
),
array(
"account_id" => 2,
"amount" => 100
),
array(
"account_id" => 2,
"amount" => 100
),
array(
"account_id" => 2,
"amount" => 100
)
);
$response = array();
foreach ($users as $usersIndex => $usersValue) {
if (!isset($response[$usersValue["account_id"]])) {
$response[$usersValue["account_id"]][$usersValue["account_id"]] = 0;
}
$response[$usersValue["account_id"]][$usersValue["account_id"]] += $usersValue["amount"];
}
$response = array_values($response);
var_dump($response);
输出:
array(2) { [0]=> array(1) { [1]=> int(200) } [1]=> array(1) { [2]=> int(400) } }
但是对于该操作,您应该使用groupBy和sum查询。
答案 2 :(得分:1)
这是一个例子:
$users = DB::table('users')
->select('id', DB::raw('SUM(amount) as total_amount'))
->groupBy('id')
->get();