Validar datos duplicados en CakePHP
Hoy mismo he necesitado de una validación para verificar si un dato ya existe en la base de datos. Dado que CakePHP 1.1 (en versiones posteriores a la 1.2 podéis utilizar “isUnique”) no lleva una validación en su núcleo para estos menesteres he tenido que crearla y ahora la comparto con vosotros:
/** * Verifica si un campo existe en la base de datos * Si estamos editando se excluye el valor guardado en la validación * @param array $data * @param string $field Nom de la cel·la a verificar * @return */ public function checkUnique($data) { $field = array_pop(array_keys($data)); $data = array_pop(array_values($data)); // Si estem editant... if(isset($this->data[$this->name]['id'])) { if ($field == $this->field($field, array($this->name . '.id' => $this->data[$this->name]['id']))) { return true; } } // Si no estem editant... if($this->hasField($field)) { return $this->isUnique(array($field => $data)); } }