Получение вставленных идентификаторов из saveAll () в CakePHP - PullRequest
7 голосов
/ 19 марта 2012

Используя saveAll() для сохранения нескольких записей в CakePHP, я могу успешно сохранить их в таблице. Но проблема возникает при получении идентификаторов этих сохраненных строк. LastInsertID() возвращает здесь только один последний идентификатор. Как я могу получить все последние вставленные идентификаторы, которые я вставил, используя saveAll()?

1 Ответ

25 голосов
/ 19 марта 2012

afterSave Функция вызывается после каждого отдельного сохранения в выполнении saveAll, так что вы можете сделать: В вашей AppModel


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

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

Вы можете поместить этот код в любую модель, и он должен работать нормально. Затем, чтобы вернуть идентификаторы после saveAll в вашем контроллере, вы должны сделать это так:


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

Надеюсь, это поможет

...