2012-03-19 21 views
6

Usando saveAll() para guardar múltiples registros en CakePHP, puedo guardarlos exitosamente en una tabla. Pero el problema surge al recuperar los ID de esas filas guardadas. LastInsertID() devuelve solo una última ID aquí. ¿Cómo puedo obtener todos los últimos ID insertados que he insertado usando saveAll()?Recuperando IDs insertadas de saveAll() en CakePHP

Respuesta

23

afterSave función se llama después de cada individuo, salvo en una ejecución saveAll, por lo que podía hacer: En su AppModel


class AppModel extends Model { 
    var $inserted_ids = array(); 

    function afterSave($created) { 
     if($created) { 
      $this->inserted_ids[] = $this->getInsertID(); 
     } 
     return true; 
    } 
} 

Usted puede colocar este código en cualquier modelo y que debería funcionar bien. A continuación, devolver los identificadores después de la saveAll en su controlador, deberá hacerlo así:


if($this->Post->saveAll($posts)) { 
    $post_ids=$this->Post->inserted_ids; //contains insert_ids 
} 

creo que sirve

+0

Gracias Sudhir, he intentado esto, pero su lanzando un error Undefined property: AppModel: inserted_ids en mi controlador, ¿cuál puede ser el motivo ...? – Vineet

+0

@ vin.it eliminar var antes de $ inseted_ids – Ehtesham

+0

@ehtesham: thanx ehtesham.i lo intenté pero sigue arrojando el mismo error. otras posibilidades ...? – Vineet