Похоже, что в v3.1.0 ORM _ignored_columns
свойство _ignored_columns
было удалено.
Каков рекомендуемый метод работы с полями, которые не находятся в базах данных? Случай, который у меня есть сейчас, – password_confirm, где пароль – это поле, но мы требуем, чтобы пользователь дважды вводил пароль.
Вы можете передать дополнительный объект проверки для сохранения, создания и обновления. Таким образом, ваш пример будет выглядеть так:
/** * Password validation for plain passwords. * * @param array $values * @return Validation */ public static function get_password_validation($values) { return Validation::factory($values) ->label('password', 'password') ->label('password_confirm', 'repeat password') ->rule('password', 'not_empty') ->rule('password', 'min_length', array(':value', 8)) ->rule('password_confirm', 'matches', array(':validation', ':field', 'password')); } /** * Create user account * * @param array $values * @param array $keys * @throws ORM_Validation_Exception */ public function create_user($values, $keys) { $external = Model_User::get_password_validation($values); $this->values($values, $keys); return $this->create($external); }
Обратите внимание, как проверка пароля передается в метод create.
Значение $keys
указывает, какие значения должны быть сохранены в модели. «password_confirm» не было в этом списке, поэтому оно игнорируется. Эта функция также связана с безопасностью, вы не хотите, чтобы пользователи вручную устанавливали идентификатор в своем запросе POST.
Затем вы можете создать пользователя, вызвав create_user
:
$user->create_user($_POST, array('username', 'email', 'password'));