$found = false;
$iter = 0; // It's a good idea to include an upper bound on the number of iterations
while(!$found && $iter < 1000){
$aliasId = $model->random_id_gen('5');
//calls the active record class for table Person
$person = new Person();
//searches the person table to see if this alias is being used
$search = $person->find('alias=:alias', array(':alias'=>$aliasId));
//if null then it sets an attribute for a another active record class
if (is_null($search)){
$model->setAttribute('alias', $aliasId);
$model->setIsNewRecord(TRUE);
$found = true;
}
$iter++;
}
if(!$found){ /* Some error condition because a suitable ID could not be found*/ }
Однако, может быть лучше использовать автоматически увеличенное значение для псевдонима, если его не нужно генерировать случайным образом.
Для преобразования числа в base36 вы можете использовать функцию PHP * base_convert :
$a = base_convert(12345,10,36);
$b = base_convert($a,36,10);
print "12345 --> ".$a." --> ".$b;
вывод:
12345 --> 9ix --> 12345
Если вы хотите убедиться, что ваш номер состоит не менее чем из 5 цифр, начните увеличивать значение с: base_convert(10000,36,10)
= 1679616