Господа, помогите чайнику!
В тридевятой базе данных PostgreSQL жила-была таблица users с полем login varchar(32) и был у неё индекс CREATE UNIQUE INDEX users_login_idx ON users ((lower(login))); А в тридесятом приложении жила-была модель ActiveRecord для этой таблицы с правилом валидации unique для поля login:
public function rules() {
return array(
array("login", "unique")
);
}
То есть, предполагается, что логины уникальны без учёта регистра, и логиниться можно как под именем GeNNaDy, так и под именем gennady, и будет это один и тот же юзер. Допустим, юзер gennady уже существует. Теперь, когда мы пытаемся создать юзера GeNNaDy, правило валидации unique для него не срабатывает, так как SELECT * FROM users WHERE login = ‘GeNNaDy’ ничего не находит из-за того, что varchar в PostgreSQL чувствителен к регистру. Аналогично и Геннадий не может в поле логина ввести “GENNADY”, потому что Users::model()->findByAttributes(“login” => “GENNADY”) ничего не находит.
Внимание, вопрос. Какое магическое заклинание нужно наложить на модель Users, чтобы она искала по полю login без учёта регистра, например, выполняя запрос SELECT * FROM users WHERE login ILIKE "GeNNaDy" или SELECT * FROM users WHERE lower(login) = lower("GeNNaDy")? Маны навалом, Spell Power = 10. TIA.