Entradas únicas

Siguiendo con el ejemplo de mis anteriores consultas:

Necesito fijar un campo (atributo de una clase) como por ejemplo el nombre de un producto para que sea único, es decir que solo UN producto podrá tener ese nombre. He buscado y he encontrado ESTE post en el cual no han podido solucionar este tema mostrando un mensaje de error cuando se quiere crear (en este caso) un producto con un nombre ya existente.

Quisiera saber si esto se debe hacer con código PHP, manejando las consultas de DB o cómo sería la mejor manera.

Desde ya muchas gracias.

Pues hay 2 formas de hacerlo o al menos es lo que haria…

La primera y mas facil es agregando una regla al modelo…


public function rules()

{

	return array(

		array('producto', 'unique', 'message'=>':S no se debe repetir'),

	);

}

Otra forma sería que antes de guardar el nombre del producto verifiques que no existe en la DB, y esto lo tendrias que hacer realizando una consulta desde el metodo beforeSave.

En realidad desconozco si utilizando la regla "unique" haga internamente cualquier tipo de validacion para encontrar similitudes… por ej… quitar espacios, encontrar en la mitad de una cadena, distinguir mayusculas de minisculas, etc…

Hola! Gracias por tu respuesta.

Colocando ‘unique’ tengo el siguiente error independientemente de si coloco o no el ‘message’: “Property “CStringValidator.0” is not defined.”

Vi esto por ahí: "Bug #816: CUniqueValidator did not work with CFormModel".

Cómo podré solucionarlo?

Saludos

Entonces aun puedes hacerlo de la manera complicada … que mencionaba… antes de almacenar el valor, consultarlo en la BD …