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
6
A
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
Thanx Sudhir yardımcı olur umarım inserted_ids Benim denetleyicide , neden olabilir .. ?? – Vineet
@ vin.it, $ inseted_ids – Ehtesham
@ehtesham: thanx ehtesham.i den önce var olanı kaldırmayı denedi ancak hala aynı hatayı atıyor. diğer olasılıklar ..? – Vineet