php - Laravel 按列的日期总和连接表
问题描述
我有两个具有这些结构的表:
表:收入
id | Date | IncomeAmount
表:费用
id | Date | ExpenseAmount
我一天中有多个寄存器,所以我需要按天添加字段IncomeAmount
并ExpenseAmount
显示如下内容:
Date | IncomeAmount | ExpenseAmount | Balance
2018-01-01 | 10 | 5 | 5
2018-01-02 | 0 | 5 | -5
2018-01-03 | 20 | 0 | 20
如示例中所示,在某些日子可能没有收入金额或费用金额字段的注册。
非常感谢任何有关如何实现这一目标的建议。
对不起我的英语。提前致谢。
解决方案
如果您收到新收入,请运行此查询并更新您的每日表:(您没有提到表名,所以只需更改它)
$today = \Carbon\Carbon::now()->format('Y-m-d');
Income::insert([
'Date' => $today,
'IncomeAmount' => $income
]);
$today_report = ReportTable::where(['date', $today])->get()[0];
$today_report->IncomeAmount = $today_report->IncomeAmount + $income;
$today_report->balance = $today_report->IncomeAmount - $today_report->ExpenseAmount;
$today_report->save();
如果您收到新的费用:
$today = \Carbon\Carbon::now()->format('Y-m-d');
Expense::insert([
'Date' => $today,
'ExpenseAmount' => $expense
]);
$today_report = ReportTable::where(['date', $today])->get()[0];
$today_report->ExpenseAmount = $today_report->ExpenseAmount + $income;
$today_report->balance = $today_report->IncomeAmount - $today_report->ExpenseAmount;
$today_report->save();
我认为这就是你所需要的。注意有模型
Income, Expense, ReportTable
编辑 编辑 编辑 编辑
$incomes = Income::select('*', DB::raw('SUM(incomeAmount) as incomeAmount'))
->groupBy('date')
->get()
->pluck('incomeAmount','date');
$expenses = Expense::select('*', DB::raw('SUM(expenseAmount) as expenseAmount'))
->groupBy('date')
->get()
->pluck('expenseAmount','date');
$day_balance = $income['2018-15-06'] - $income['2018-15-06'];
推荐阅读
- c - 如何使用 libpq 执行异步查询
- javascript - Jest 检测到打开的句柄阻止 Jest 在 Gitlab Ci 中退出
- python - 包含转义序列字符的 sys.argv 字符串将无法在 LCD 上正确显示
- javascript - 将 URI 动态添加到 Javascript Adcode
- c# - WPF 在窗口 OnInit 中编辑数据模板
- php - Docker 上的 PHP - 通过 docker run CLI 命令将变量传递给容器
- javascript - 有没有办法可以在同一个网页中获得 2 个完全隔离的 javascript 上下文?
- multithreading - 多线程架构中如何管理深度嵌套线程
- android - 谁能帮我如何设计下面的这个屏幕
- vba - 尝试选择多个文档时如何解决运行时错误 5479?