2015-12-24 9 views
0

I.E. Если я обновляю address_line1, тогда будет дана его ошибка для выделенного мобильного номера. Хотя обновление не должно совпадать с ним. Даже если я меняю номер мобильного телефона, он должен проверить его с другим пользователем.Правила изменения правил для Yii2 для тех же записей

public function rules() 
    { 
     return [ 
        [['mobile_number','address_line1','address_line2','city','state','country','pincode' ],'required'], 
        ['mobile_number','mobile_number_allocation_validate'], 

     ]; 
    } 

public function mobile_number_allocation_validate($attribute){ 
     // add custom validation 
     $result = User::find() 
     ->where('`mobile_number` = "'.$this->$attribute.'" AND 
       `status` = "A" ')->all(); 
     if(!empty($result)){ 
      $this->addError($attribute,'Mobile number is allocated to other vehicle'); 
     } 

    } 

Заранее спасибо

+1

Есть ли причина, по которой вы " ve не просто использовал «уникальный» валидатор? –

+0

@JoeMiller дублирование будет, но мне нужно фильтровать с активным user.as, я не удалю одну строку из базы данных. – Santosh

ответ

0

Изменить условия как: - Перекрыть beforeSave() из User ActiveRecord

/** 
* BeforeSave() check if User ActiveRecord is created with same calculator param 
* if created then return false with model error 
* 
*/ 
public function beforeSave($insert){ 
    $model = self::find()->where('`mobile_number` = "'.$this->$attribute.'" AND 
      `status` = "A" ')->all(); 

    if($model !== null && $model->id !== $this->id){ 
     $this->addError('mobile_number' , 'Mobile number is allocated to other vehicle'); 
     return false; 
    } 

    return parent::beforeSave($insert); 
} 
+0

$ this-> id, на который будет ссылаться идентификатор? (Попытка получить свойство не-объекта) – Santosh

+0

хочу знать выше модель Пользователь UserRecord Класс любого другого класса модели .. кроме Пользовательского класса –

+0

Только один класс – Santosh

0

Вы должны быть в состоянии использовать unique валидатор для этого, просто добавив filter условие например

public function rules() 
    { 
     return [ 
      [['mobile_number','address_line1','address_line2','city','state','country','pincode' ],'required'], 
      ['mobile_number','unique', 'filter' => ['status' => 'A']], 
     ]; 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^