generateId($model); break; } } /** * @param \Phalcon\Mvc\ModelInterface $model * @throws \Phalcon\Security\Exception */ public function generateId(\Phalcon\Mvc\ModelInterface $model) { $field = $this->options['field']; $len = $this->options['length']; if (isset($this->options['expression'])) { $expr = 'AND ' . $this->options['expression']; } else { $expr = ''; } if ($model->$field === null) { $random = new \Phalcon\Security\Random(); for ($i = 0; $i < 3; $i++) { $id = substr($random->base64Safe(), 0, $len); $count = $model->count(array( "$field = ?0 $expr", 'bind' => array($id) )); if ($count < 1) { $model->$field = $id; break; } } } } }