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