2012-03-19 36 views
6

Sử dụng saveAll() để lưu nhiều bản ghi trong CakePHP, tôi có thể lưu chúng thành công trong bảng. Nhưng vấn đề nảy sinh khi truy xuất ID của những hàng đã lưu. LastInsertID() chỉ trả về một ID cuối cùng tại đây. Làm thế nào tôi có thể nhận được tất cả các ID được chèn cuối cùng mà tôi đã chèn bằng cách sử dụng saveAll()?Lấy ID được chèn từ saveAll() trong CakePHP

Trả lời

23

afterSave hàm được gọi sau khi mỗi cá nhân tiết kiệm trong một thực saveAll, vì vậy bạn có thể làm: Trong AppModel bạn


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

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

Bạn có thể đặt mã này vào bất kỳ mô hình và nó sẽ hoạt động tốt. Sau đó, quay trở lại các ID sau khi saveAll trong điều khiển của bạn, bạn sẽ làm như vậy như thế này:


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

Hy vọng nó giúp

+0

Thanx Sudhir, tôi đã cố gắng này, nhưng ném nó một lỗi tài sản Undefined: AppModel: inserted_ids trong bộ điều khiển của tôi, điều gì có thể là lý do .. ?? – Vineet

+0

@ vin.it xóa var trước $ inseted_ids – Ehtesham

+0

@ehtesham: thanx ehtesham.i đã thử nó nhưng nó vẫn ném cùng một lỗi. bất kỳ khả năng khác ..? – Vineet

Các vấn đề liên quan