我有一系列的录取通知书,每个学生都有多次付款记录。就像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
}
}
听起来您正在寻找这样的东西:
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
中。否则,它将转到下一次付款。除非我误解了一点,否则这可能使不必使用continue
或break
。
我不确定您想对$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
。