首页 > 解决方案 > Laravel PHP:从递归函数中获取值

问题描述

我有一个invoice_schedule_table结构如下:
id、previous_invoice_schedule_id、due_date
7559、01-06-2021 7772、7559、15-06-2021
7773、7772、20-06-2021

我正在尝试创建一个循环/递归函数,如果我从 UI 打开任何发票计划(ID:7559、7772),最终将返回最后一个到期日期(20-06-2021)。

function latestRescheduledInvoiceSchedule($invoiceScheduleId) {

    $rescheduledPaymentSchedule = InvoiceSchedule::where('previous_invoice_schedule_id', $invoiceScheduleId)->first();

    if(isset($rescheduledPaymentSchedule)) {
        latestRescheduledInvoiceSchedule($rescheduledPaymentSchedule->id);
    }
}

但是一旦达到最后一条记录,我无法弄清楚如何获得价值。

对此有任何帮助吗?

标签: phplaravellaravel-5eloquent

解决方案


您应该在未设置时检索该due_date值,在这种情况下,它的 id 为 7773:$rescheduledPaymentSchedule

function latestRescheduledInvoiceSchedule($invoiceScheduleId) {
    $rescheduledPaymentSchedule = InvoiceSchedule::where('previous_invoice_schedule_id', $invoiceScheduleId)->first();

    if($rescheduledPaymentSchedule) {
        latestRescheduledInvoiceSchedule($rescheduledPaymentSchedule->id);
    } else {
        // There is no further values, retrieve the `due_date` of the current invoiceScheduleId
        $last_record = InvoiceSchedule::find($invoiceScheduleId);
        if ($last_record) {
            $last_due_date = $last_record->due_date;
        }
    }
}

推荐阅读