Вы ошиблись здесь:
$invoiceNo = OrderProformaInvoice::latest()->first(['invoice_no']);
В этой строке не было необходимости, поскольку у вас уже есть счетчик всех OrderProformaInvoice
, поэтому мы можем также установить его в переменную и просто увеличить ее для новой, а не делать еще один вызов в базу данных.
Если вы когда-либо удаляете запись в базе данных, вы можете использовать
$invoice = OrderProfromaInvoice::orderBy('created_at', 'desc')->first();
Тогда вместо $numOfInvoices++
вы могли бы сделать $invoice->id++
, который возьмет идентификатор последнего счета и увеличит его на единицу.
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'));
}