【问题标题】:Laravel Join Tables by date sum of columsLaravel 按列的日期总和连接表
【发布时间】:2018-05-23 14:06:54
【问题描述】:

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

表格:收入

id  | Date  | IncomeAmount

表格:费用

id  | Date  | ExpenseAmount

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

enter image description here

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

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

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

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

【问题讨论】:

  • 你已经有什么代码了?你用模型吗?
  • 两张表是什么关系?
  • 这两个表在模型中没有关系,这种情况下的关系是寄存器创建的日期。谢谢。
  • 您想要在结果中没有收入或支出的日子吗?
  • 如果当天至少有一份收入或一份支出登记册是的,但如果当天没有任何登记册,则没有。

标签: php laravel join sum


【解决方案1】:

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

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

【讨论】:

  • ReportTable出现了!
  • 我说model是必须的或者他可以用DB::table('tablename');
  • 所以你的建议是创建一个新表来重复数据?
  • 你是对的,谢谢。我认为他需要创建新的报告表。我现在将编辑我的答案。谢谢
  • 也许您在 2018-12-04 没有任何费用或发票,所以请使用 isset 进行检查
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 2020-03-27
相关资源
最近更新 更多