首页 > 解决方案 > Laravel 按列的日期总和连接表

问题描述

我有两个具有这些结构的表:

表:收入

id  | Date  | IncomeAmount

表:费用

id  | Date  | ExpenseAmount

我一天中有多个寄存器,所以我需要按天添加字段IncomeAmountExpenseAmount显示如下内容:

在此处输入图像描述

Date       | IncomeAmount | ExpenseAmount | Balance
2018-01-01 | 10           | 5             | 5
2018-01-02 | 0            | 5             | -5
2018-01-03 | 20           | 0             | 20

如示例中所示,在某些日子可能没有收入金额或费用金额字段的注册。

非常感谢任何有关如何实现这一目标的建议。

对不起我的英语。提前致谢。

标签: phplaraveljoinsum

解决方案


如果您收到新收入,请运行此查询并更新您的每日表:(您没有提到表名,所以只需更改它)

$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'];

推荐阅读