Guardando varias filas en CakePHP
22/05/2007Una característica extraña (util?) de CakePHP es que guarda el indice de el ultimo registro guardado automaticamente en $this->Model->id y como bien sabemos, cuando insertas algo en un modelo, que trae seteada una id que ya existe, actualiza los datos en lugar de insertar unos nuevos.
Es muy comodo en realidad, pero en este caso en particular que tengo varias filas a insertar, no lo es.
1 2 3 4 5 6 | $datos = array('primero', 'segundo', 'tercero'); foreach ($datos as $dato) { $this->data['Modelo']['dato'] = $dato; $this->Modelo->save($this->data); } |
Esto resultara en que solo se va a crear una fila nueva que se ira actualizando constantemente segun tratamos de insertar y quedara con el valor de ‘tercero’ porque es el último dato.
Para solucionar esto hay que destruir el índice que crea despues de cada inserción.
1 2 3 4 5 6 7 | $datos = array('primero', 'segundo', 'tercero'); foreach ($datos as $dato) { $this->data['Modelo']['dato'] = $dato; $this->Modelo->save($this->data); $this->Modelo->id = false; } |
Voilá!


Hay 3 comentarios: