Попробуйте эту функцию Для Laravel он также вернет 8-значный номер с проверкой, уникальной также в дБ.
В функции контроллера
$expense_id = Expense::get_random_string();
Модал
public static function get_random_string()
{
if (function_exists('com_create_guid') === true)
{
return trim(com_create_guid(), '{}');
}
$random_unique = sprintf('%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
$expense = Expense::where('expense_id', '=', $random_unique)->first();
if ($expense != null) {
$random_unique = $this->get_random_string();
}
return $random_unique;
}