我有一张表,记录如下:
id | entry_id | 类型 | 数量 |
---|---|---|---|
1 | 1 | 在 | 500 |
2 | 1 | 出 | 600 |
3 | 2 | 在 | 100 |
4 | 2 | 出 | 20000 |
我想要一个查询来根据 entry_id 合并行以获得这样的表:
id | entry_id | in_amount | out_amount |
---|---|---|---|
1 | 1 | 500 | 600 |
3 | 2 | 100 | 20000 |
我想使用 PHP Laravel 执行此操作。
我尝试使用 group concat 但我没有得到想要的结果。
这是我的代码尝试:
DB::table('entry_entities')
->selectRaw("
entry_entities.entry_id,
GROUP_CONCAT(entry_entities.entity_type, '-', entry_entities.account_id) as account_ids
")
->groupBy('entry_entities.entry_id')
->get()
->map(function($row) {
$accountIds = explode(',', $row->account_ids);
foreach($accountIds as $account) {
[$key, $value] = explode('-', $account);
$row->{$key} = $value;
}
return $row;
});
这不是一次有效的尝试,因为我需要一个可以用作另一个查询的查询。谢谢!