jueves, 13 de mayo de 2010

Forzar la actualización de un registro de un Model

Mi vida como desarrollador es un poco caótica, ya que no me dedico a tiempo completo y últimamente otras demandas me quitan montones de tiempo y toneladas de concentración. Por eso, a pesar de llevar trabajando con CakePHP desde hace ya un par de años, tengo dudas en conceptos básicos o tengo que empezar desde cero con algunos proyectos ya que "pierdo el hilo".

Un ejemplo de estos conceptos básicos que tenía dudosos es lo que pasa cuando creas registros en un modelo y cuando manipulas sus id.

Cuando haces un Model->save() sin indicar un id para el modelo, se crea un nuevo registro. Por tanto, para actualizar un registro existente debes indicar un id.

Esto lo puedes hacer tanto en la propiedad Model->id, como en el array de datos que pases a create o a save. Por ejemplo:


array('Model' => array('id' => 12));


Además, se siguen unas cuantas reglas más:

* Si Model->id tiene un valor y en el array de datos se pasa un valor nuevo, prevalece éste último.
* Si el id que has pasado no existe en la base de datos, se crea un registro nuevo con este id

Saber esto es interesante cuando nos interesa controlar la creación de id's mediante un sistema propio.

Por cierto, ¿qué pasa si nuestro id es de tipo integer pero no tiene auto_increment y no lo especificamos en el Model? Resulta que CakePHP es capaz de emular el auto_increment.

No hay comentarios: