CUniqueValidator

Не могу разобраться с CUniqueValidator

добавляю в модель правило

При выполнении проверки правило не различает регистр. То есть в базе есть пользователь demo, ещё одна запись demo не добавляется и вызывает ошибку а вот Demo или deMo добавляется свободно.

В CUniqueValidator.php атрибут $caseSensitive по умолчанию стоит true…

В чем может быть проблема?

В вашем случае валидатор работает правильно. По умолчанию свойство $caseSensitive = true, поэтому при сравнении 'demo' с 'DeMo' получается что вторая строка уникальная и она свободно добавляется в базу.

В вашем случае как раз нужно поставить $caseSensitive = false.

Действительно немного затупил… Все работает верно.

Большое спасибо.

есть ли встроенная функция проверки на уникальность несколько параметров вместе?

пример: поля x и y. валидация не должна проходить если в таблице есть запись где и x и y совпадают, соотвественно если одно из значений не совпадает - валидация проходит.

писать собственную функцию - можно, но не красиво если можно организовать средствами yii

Готовой нет. Можно написать свою, интегрированную в конкретную модель.

сам только что столкнулся с этим - нужно проверить на уникальность запись по двум ключам сразу

незнаю что там было в 2009 году ;)

но проверку по нескольким полям можно затусовать в criteria




            array(

                'invoiceNumber',

                'unique',

                'className'=>'SGoods',

                'attributeName'=>'invoiceNumber',

                'criteria'=>array(

                    'condition'=>'t.dt=:date', // здеся добавляем дополнительные поля

                    'params'=> array(

                        ':date' => $this->dt // а тута))) параметры

                    )

                )

            ),