我正在使用Laravel 8创建一个应用程序。这里我需要为每个订单生成一个订单号。为此,我使用Helper并编写了以下代码。从第二次显示"未定义变量$last_number"开始,它第一次就工作了。
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;
}
从我的控制器,我使用这个:
Helper::OrderNumberGenerator(new OrderDetail, 'orderNo', 5, 'DRW');
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;
}
我认为你的代码应该是这样的。我希望这对你有帮助。
必须定义
$last_number = ' ';
if语句前的当它退出if块时,该变量将从内存中删除