如何使用中断或连续播放

问题描述 投票:0回答:1

我有一系列的录取通知书,每个学生都有多次付款记录。就像Admission = [1,2,3,4,5,6]这是录入ID,并且Payment = [[1-> 1,5,6,2],[2-> 2,3],[3-> 4,7,8]这是入场ID-> payment_ids

foreach($admission as $a)
{ 
  $payment=DB::table('payement')->where('admission_id',$a->admission_id)->get();

  foreach($payment as $p)
  {
    // Here i wan if payment_date <= today_date
    // 1. Add all payment
    // 2. Else Go to the next admission id
  }
}
php laravel
1个回答
0
投票

听起来您正在寻找这样的东西:

foreach($admission as $a)
{ 
  $payment = DB::table('payment')->where('admission_id', $a->admission_id)->get();

  $totalPayment = 0;
  foreach($payment as $p)
  {
    if (\Carbon\Carbon::parse($p->payment_date)->lessThanOrEqualTo(\Carbon\Carbon::now())) {
       $totalPayment += $p->amount;
    }
  }
}

foreach上的$payment循环内,上面的代码使用Carbon比较日期。看来您正在使用Laravel的Eloquent,因此您应该在应用程序中使用Carbon,因为它是Laravel的依赖项。我使用Carbon来比较日期,因为它比我更了解日期。

接下来,如果确实是payment_date小于或等于当前日期,则它将其添加到该收录的$totalPayment中。否则,它将转到下一次付款。除非我误解了一点,否则这可能使不必使用continuebreak

我不确定您想对$totalPayment做什么。现在,它将为每次入场计算,然后丢失。

如果要查找所有招生的总付款,则应将$totalPayment = 0移至foreach($admission as $a)上方的行。

[如果您想查找每次招生的总付款,则可以为每个招生$a->total_payment = $totalPayment设置totalPayment。然后,我将$totalPayment = 0更改为$a->total_payment = 0,然后将$totalPayment += $p->amount更改为$a->totalPayment += $p->amount

© www.soinside.com 2019 - 2024. All rights reserved.