2012-03-19 31 views
6

CakePHP'de birden fazla kayıt kaydetmek için saveAll()'u kullanarak, bunları bir tabloda başarılı bir şekilde kaydedebiliyorum. Ancak sorun kaydedilen satırların kimliklerini geri alırken ortaya çıkar. LastInsertID(), yalnızca tek bir son kimlik verir. saveAll()'u kullanarak eklediğim son eklenen tüm kimlikleri nasıl alabilirim?CakePHP'ye kaydedilmiş kimliklerin kaydedilmesi CakePHP

cevap

23

afterSave işlevi SaveAll yürütülmesinde tasarruf her bireyin sonra denir, bu yüzden yapabileceği: sizin AppModel


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

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

herhangi bir model bu kodu yerleştirebilirsiniz içinde ve sorun çıkmaması gerekir. Sonra denetleyicisi SaveAll sonra kimlikleri dönmek için, bu gibi pek yapacağını: AppModel:


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

ben bu çalıştı ama onun bir hatayı Tanımsız özellik atma, bu

+0

Thanx Sudhir yardımcı olur umarım inserted_ids Benim denetleyicide , neden olabilir .. ?? – Vineet

+0

@ vin.it, $ inseted_ids – Ehtesham

+0

@ehtesham: thanx ehtesham.i den önce var olanı kaldırmayı denedi ancak hala aynı hatayı atıyor. diğer olasılıklar ..? – Vineet