Php Laravel按列的日期和联接表

Php Laravel按列的日期和联接表,php,laravel,join,sum,Php,Laravel,Join,Sum,我有两个具有以下结构的表: 表:收入 id | Date | IncomeAmount 表:费用 id | Date | ExpenseAmount 我一天有多个寄存器,因此我需要按天添加字段IncomeAmount和expenseamunt,并显示如下内容: 如示例中所示,某些天可能没有IncomeAmount或ExpenseAmount字段的注册 任何关于如何实现这一目标的建议都将不胜感激 请原谅我的英语。 提前感谢。如果您收到新收入,请运行此查询并更新您的每日表:(您没有提到

我有两个具有以下结构的表:

表:收入

id  | Date  | IncomeAmount
表:费用

id  | Date  | ExpenseAmount
我一天有多个寄存器,因此我需要按天添加字段
IncomeAmount
expenseamunt
,并显示如下内容:

如示例中所示,某些天可能没有IncomeAmount或ExpenseAmount字段的注册

任何关于如何实现这一目标的建议都将不胜感激

请原谅我的英语。
提前感谢。

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

如果您收到新的体验:

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

你已经有了什么代码?您使用模型吗?两个表之间的关系是什么?这两个表在模型中没有关系,这种情况下的关系将是创建寄存器的日期。谢谢。您希望结果中没有收入或支出的天数吗?如果该天至少有一个收入或支出登记簿,则为是,但如果该天没有任何收入或支出登记簿,则为否。出现了Wild
ReportTable
!我说模型是必要的,或者他可以使用
DB::table('tablename')
那么您的建议是为重复数据创建一个新表?您是对的,谢谢。我认为他需要创建新的报告表。我现在编辑我的答案。感谢您可能在2018-12-04没有任何费用或发票,请与isset联系
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'];