Я хочу, чтобы создать уникальный код для загрузки объектаKohana ORM создавая уникальный код, основанный на других моделях атрибуты
В настоящее время модели простирающаяся Kohana создаст функцию
public function create(Validation $validation = NULL)
{
// fails as there is no $user_id passed through...
$this->code = $this->generate_code($user_id);
parent::create($validation);
}
который звонит:
protected function generate_code($user_id)
{
$code = $user_id.str_pad($this->id, 6, '0', STR_PAD_LEFT);
return $code;
}
У меня две проблемы: сначала я хочу использовать user_id в начале кода. Я думал о вызове статической функции в пользовательской модели, чтобы получить ее, но думаю, что это плохая идея, потому что я прочитал, что лучше сделать модели независимыми от других моделей. Каков лучший способ сделать это, возможно, через значение в данных сеанса (или это плохая практика)?
Вторая проблема заключается в том, что я хотел бы добавить Идентификатор загрузки в конец кода (который является автоматически увеличиваемым значением), однако это значение будет установлено только после его создания, но оно не будет иметь generate_code после создания, потому что столбец кода в базе данных уникален. Есть ли для этого обходное решение?
редактировать: Я установил второй вопрос, добавив идентификатор после того, как была создана например .:
public function create(Validation $validation = NULL, $user_id)
{
$this->code = $user_id.time();
parent::create($validation);
$this->code = $this->code.str_pad($this->id, 6, '0', STR_PAD_LEFT);
}
спасибо, что я не слышал об этом раньше. В конце я использовал немного другую работу. Я исправил вторую проблему, добавив идентификатор после создания объекта. – xylar