2012-03-19 11 views
6

Utilizzando saveAll() per salvare più record in CakePHP, sono in grado di salvarli correttamente in una tabella. Ma il problema sorge durante il recupero degli ID di quelle righe salvate. LastInsertID() restituisce qui solo un ultimo ID. Come posso ottenere tutti gli ultimi ID inseriti che ho inserito utilizzando saveAll()?Recupero degli ID inseriti da saveAll() in CakePHP

risposta

23

funzione AfterSave viene chiamato dopo che ogni individuo, salvo in un'esecuzione SaveAll, così si potrebbe fare: Nella tua AppModel


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

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

È possibile inserire questo codice in qualsiasi modello e dovrebbe funzionare bene. Poi per tornare gli ID dopo la SaveAll nel controller, si dovrebbe fare in modo simile a questo:


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

Speranza che aiuta

+0

Grazie Sudhir, ho provato questo, ma la sua lanciando un errore Undefined property: AppModel: inserted_ids nel mio controller, quale può essere la ragione .. ?? – Vineet

+0

@ vin.it rimuovere var prima $ inseted_ids – Ehtesham

+0

@ehtesham: thanx ehtesham.i l'ha provato ma continua a lanciare lo stesso errore. altre possibilità ...? – Vineet