Laravel 5.1 - 通过 id 和 sum 值从数据库组中获取数据
Laravel 5.1 - get data from database group by id and sum values
我不确定该怎么做,我需要从 table 获取数据并将 ID 相同的每个字段的值相加。
我尝试过的事情
- 提取所有数据并尝试将重复项存储在数组中,然后像那样对其进行排序
$users = User::all();
$array = [];
foreach($users as $user)
{
array_push($array, [$user->account_id => $user->amount]);
}
- 使用 laravel 集合来存储数组数据并在那里排序
除此之外,我不太确定该怎么做!这是我从数据库中提取的数据。
0: {1: 100.00}
1: {1: 100.00}
2: {2: 100.00}
3: {2: 100.00}
这是我想要的输出
0: {1: 200.00}
1: {2: 200.00}
这就是我所需要的一切,我觉得它真的很简单,但我不知道,任何帮助和指导将不胜感激,将提供任何需要的进一步信息。
试试这个方法:
<?php
User::groupBy('account_id')
->selectRaw('sum(amount) as sum, account_id')
->lists('sum','account_id');
编辑
由于 ->lists()
现在已在 laravel 5.2+ 中弃用,现在应该是 ->pluck()
,仅供参考
如果你想使用 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 和求和查询。
这是一个例子:
$users = DB::table('users')
->select('id', DB::raw('SUM(amount) as total_amount'))
->groupBy('id')
->get();
我不确定该怎么做,我需要从 table 获取数据并将 ID 相同的每个字段的值相加。
我尝试过的事情
- 提取所有数据并尝试将重复项存储在数组中,然后像那样对其进行排序
$users = User::all();
$array = [];
foreach($users as $user)
{
array_push($array, [$user->account_id => $user->amount]);
}
- 使用 laravel 集合来存储数组数据并在那里排序
除此之外,我不太确定该怎么做!这是我从数据库中提取的数据。
0: {1: 100.00}
1: {1: 100.00}
2: {2: 100.00}
3: {2: 100.00}
这是我想要的输出
0: {1: 200.00}
1: {2: 200.00}
这就是我所需要的一切,我觉得它真的很简单,但我不知道,任何帮助和指导将不胜感激,将提供任何需要的进一步信息。
试试这个方法:
<?php
User::groupBy('account_id')
->selectRaw('sum(amount) as sum, account_id')
->lists('sum','account_id');
编辑
由于 ->lists()
现在已在 laravel 5.2+ 中弃用,现在应该是 ->pluck()
,仅供参考
如果你想使用 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 和求和查询。
这是一个例子:
$users = DB::table('users')
->select('id', DB::raw('SUM(amount) as total_amount'))
->groupBy('id')
->get();