#php #codeigniter #codeigniter-2
#php #codeigniter #codeigniter-2
Вопрос:
Я пытаюсь проверить, является ли значение уникальным. У меня есть функция, но как я могу проверить ее снова.
Это функция (она работает):
public function is_unique($field, $val)
{
$this->db->select($field)->where($field, $val);
$result = $this->get();
$result = $result['data'];
return $bool = count($result) == 0 ? $val : FALSE;
}
Здесь я проверяю значение, чтобы увидеть, является ли оно уникальным:
$unique_code = random_string('alnum', 6);
$unique_code = $this->posts->is_unuque('unique_code', $unique_code) != FALSE ? $unique_code: random_string('alnum', 6);
Как я могу создать новое значение, если функция возвращает FALSE, и проверить новое значение (выполнять цикл до тех пор, пока значение не станет уникальным)?
Ответ №1:
Попробуйте это;
function is_unique($field, $val = null)
{
if ( is_null($val))
{
// No $val supplied, so we generare a new one.
$val = random_string('alnum', 6);
}
$this->db->select($field)->where($field, $val);
$result = $this->db->get('table');
if ( $result->num_rows() > 0 )
{
// Found a match
// Try again....
$this->is_unique($field);
}
else
{
// No match
return $val;
}
}
Если вы не укажете значение $val, функция сгенерирует новую случайную строку, затем проверьте, является ли она уникальной. Если это не так, он повторяет попытку.
Ответ №2:
return (count($result) == 0 ? $val : $this->is_unique($filed,random_string('alnum', 6));
может быть что-то вроде этого вместо возврата false запускайте функцию, пока результат не станет уникальным
$unique_code = $this->posts->is_unuque('unique_code', $unique_code);