Правило проверки Yii – уникальное

в структуре Yii, могу ли я использовать уникальное правило проверки для проверки уникальности поля в каком-то определенном состоянии (я знаю, что есть критерии, но это условие немного сложно)? Т.е., я хочу проверить уникальность num_days по свойству property_id.

Таблица:

NUM PROP_ID 3 4 3 5 

проверка должна проходить в случае, если я попробую вставить 3, 6, но не сработает в случае 3, 4

Проверьте UniqueAttributesValidator , а также этот ответ . В ссылках вы увидите, что они использовали $this->attributename для массива params для params criteria CUniqueValidator, но почему-то $this->attributename было для меня null . Я считаю, что это потому, что $this не передается правильно валидатору, так что в любом случае было бы лучше использовать класс UniqueAttributesValidator, потому что он был создан только для таких ситуаций.

В результате sql будет иметь предложение WHERE , подобное этому:

 SELECT ... WHERE (`num`=:value) AND (`prop_id`=:prop_id) ... 

который легко провалится на 3, 4 и пройдет 3, 6. Таким образом, он должен работать для вашей ситуации.

Сначала создайте уникальное поле в таблице

и в модели добавьте это в свои правила ()

  array('field_name', 'unique'), 

Для комбинации двух полей используйте этот код

 public function rules() { return array( array('firstKey', 'unique', 'criteria'=>array( 'condition'=>'`secondKey`=:secondKey', 'params'=>array( ':secondKey'=>$this->secondKey ) )), ); } 

Создайте свою пользовательскую функцию Validator или validation, это просто.