Объект класса 'modelName' не может быть преобразован в int в laravel - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь создать номер счета-фактуры, например - HCL/LF/02/2018, в котором номер будет увеличен на единицу для нового счета.Может ли кто-нибудь помочь мне получить ожидаемый 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 }}">

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вы ошиблись здесь:

$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'));
}
0 голосов
/ 17 мая 2018

Вы ошиблись в этой строке:

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

Правильно:

$invoiceNo = OrderProformaInvoice::latest()->get()->invoice_no;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...