对象在laravel中无法转换为int

gcxthw6b  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(467)

我正在尝试创建一个发票号码,如- HCL/LF/02/2018 其中,新发票的编号将增加1。有人能帮我一下吗 invoice_no ? 我在控制器里试过这样的东西-

public function create()
{
    $check = OrderProformaInvoice::orderBy('created_at', 'DESC')->get();
    $number = 01;
    $year   = date('Y');
    if (count($check) > 0) {

        $invoiceNo = OrderProformaInvoice::latest()->first(['invoice_no']);

        $arr     = array('HCL','LF', $invoiceNo + 1, $year);
        $newInvoiceNo = implode("/",$arr);
    }else{

        $arr     = array('HCL','LF', $number, $year);
        $newInvoiceNo = implode("/",$arr);

    }
    return view('admin.marchendaising.order-proforma-invoices.create', compact('newInvoiceNo'));
}

在我看来表单的输入域是-

<input type="text" name="invoice_no" class="form-control" value="{{ $newInvoiceNo }}">
cl25kdpy

cl25kdpy1#

你在这行有错误:

$invoiceNo = OrderProformaInvoice::latest()->first(['invoice_no']);

对的:

$invoiceNo = OrderProformaInvoice::latest()->get()->invoice_no;
2wnc66cl

2wnc66cl2#

你犯了个错误: $invoiceNo = OrderProformaInvoice::latest()->first(['invoice_no']); 因为您已经计算了所有的 OrderProformaInvoice 因此,我们也可以将其设置为一个变量,然后将其增加一个新变量,而不是再次调用数据库。
如果要删除数据库记录,可以使用 $invoice = OrderProfromaInvoice::orderBy('created_at', 'desc')->first(); 而不是 $numOfInvoices++ 你能做到的 $invoice->id++ 它将获取最新发票的id并将其递增1。

public function create()
{
    $check = OrderProformaInvoice::orderBy('created_at', 'DESC')->get();
    $year   = date('Y');
    $numOfInvoices = count($check)

    $arr = array('HCL','LF', $numOfInvoices++, $year);
    $newInvoiceNo = implode("/",$arr);

    // You could also just do this

    $newInvoiceNo = 'HCL/LF/' . $numOfInvoices++ . '/' . $year;
    // $newInvoiceNo will equal example: 'HCL/LF/12/2018';

    return view('admin.marchendaising.order-proforma-invoices.create', compact('newInvoiceNo'));
}

相关问题