如何计算 Laravel 中的前几行余额

How to Calculate Previous Rows Balance in Laravel

我有一笔交易金额 table,其中包含以下数据:

我首先显示余额。

控制器代码

 $invaccountstatements = DB::table('tranactions')->whereDate('date', '>=', '2016-06-09')
    ->whereDate('date', '<=', '2016-06-20')->get();

Blade代码

     @foreach($invaccountstatements as $invaccstatements)
     <tr>
    <td>{{$invaccstatements->id}}</th>
    <td>{{$invaccstatements->acc_date}}</th>
    <td>{{$invaccstatements->description}}</th>
    <td style="text-align:right;">  {{number_format($invaccstatements->acc_credit, session('digitsformat'))}}   </td>
    <td style="text-align:right;">{{number_format($invaccstatements->acc_debit, session('digitsformat'))}}</td>
    <td style="text-align:right;"><?php $chkbala = $invaccstatements->acc_credit - $invaccstatements->acc_debit; $tbalance += $chkbala;
    echo number_format($tbalance, session('digitsformat'));?></td>
     </tr> 
   @endforeach

接下来,我为此 Table 添加起始日期和截止日期搜索过滤器。

我搜索从日期 (09-06-16) 到日期 (20-06-16)。

我需要 Laravel 给出以下结果的查询。

您已经有了获取所有数据的查询,现在只需添加 whereDate()

$transactions = Transaction::whereDate('date', '>=', '2016-06-09')
->whereDate('date', '<=', '2016-06-20')
->get();

使用您钟爱的查询生成器

$transactions = DB::table('transactions')
->whereDate('date', '>=', '2016-06-09')
->whereDate('date', '<=', '2016-06-20')
->get();

开始日期的余额

$beforeFirstDay = DB::table('transactions')
->whereDate('date', '<=', '2016-06-09')
->get();

//do the same loop you and your friend were doing to calculate the balance
//It will give you starting balance

$originalBalance = 0;
foreach( $beforeFirstDay as $day ) {
    $originalBalance = $originalBalance + ($day->credit - $day->debit);
}