php - personalizadas - Regla de validación Yii: única
yii2 formularios dinamicos (3)
en el marco Yii, ¿puedo usar una regla de validación única para verificar la singularidad de un campo dentro de alguna condición (sé que hay criterios, pero esta condición es un poco complicada)? Es decir, quiero verificar num_days unique por property_id.
mesa:
NUM PROP_ID
3 4
3 5
la validación debe pasar en caso de que intente insertar 3, 6, pero fallar en el caso de 3, 4
Consulte UniqueAttributesValidator , y también esta respuesta . En los enlaces verá que han usado $this->attributename
para la matriz params
de la opción de criteria
de CUniqueValidator, pero por alguna razón $this->attributename
fue null
para mí. Creo que esto se debe a que $this
no se está pasando correctamente al validador, así que de todos modos sería mejor usar la clase UniqueAttributesValidator, porque se ha creado solo para este tipo de situaciones.
El sql resultante tendrá una cláusula WHERE
como esta:
SELECT ... WHERE (`num`=:value) AND (`prop_id`=:prop_id) ...
que fallará fácilmente por 3, 4 y pasará por 3, 6. Así que debería funcionar para su situación.
Crea tu validador personalizado o función de validación, es simple.
Primero crea un campo único en tu tabla
y en el modelo, agregue esto a sus reglas ()
array(''field_name'', ''unique''),
Para combinación de dos campos únicos use este código
public function rules() {
return array(
array(''firstKey'', ''unique'', ''criteria''=>array(
''condition''=>''`secondKey`=:secondKey'',
''params''=>array(
'':secondKey''=>$this->secondKey
)
)),
);
}