Skip to content
Advertisement

How can I solve this “Undefined variable $last_number” from return line in laravel 8

I am using Laravel 8 to create an application. Here I need to Generate an Order Number for every order. For this, I use Helper and write this code. It works the very first time, from the second time it shows “Undefined variable $last_number” from return line.

public static function OrderNumberGenerator($model, $trow, $length = 4, $prefix)
{
    $data = $model::orderBy('id', 'desc')->first();
    if (!$data) {
        $og_length = $length;
        $last_number = '';
    } else {
        $code = substr($data->$trow, strlen($prefix) + 1);
        $actual_last_number = ($code / 1) * 1;
        $increment_last_number = $actual_last_number + 1;
        $last_number_length = strlen($increment_last_number);
        $og_length = $length - $last_number_length;
        $last_number_length = $increment_last_number;
    }
    $zeros = "";
    for ($i = 0; $i < $og_length; $i++) {
        $zeros .= "0";
    }
    return $prefix . '-' . $zeros . $last_number;
}

from my controller I use this:

Helper::OrderNumberGenerator(new OrderDetail, 'orderNo', 5, 'DRW');

Advertisement

Answer

    public static function OrderNumberGenerator($model, $trow, $length = 4, $prefix)
{
    $last_number = '';
    $data = $model::orderBy('id', 'desc')->first();
    if (!$data) {
        $og_length = $length;
    } else {
        $code = substr($data->$trow, strlen($prefix) + 1);
        $actual_last_number = ($code / 1) * 1;
        $increment_last_number = $actual_last_number + 1;
        $last_number = strlen($increment_last_number);
        $og_length = $length - $last_number;
        $last_number = $increment_last_number;
    }
    $zeros = "";
    for ($i = 0; $i < $og_length; $i++) {
        $zeros .= "0";
    }
    return $prefix . '-' . $zeros . $last_number;
}

I think your code should be like that. I hope it is help you.

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement