从CakePHP中的saveAll()检索插入的ID

时间:2012-03-19 11:44:29

标签: php cakephp cakephp-1.3 cakephp-appmodel

使用saveAll()在CakePHP中保存多条记录,我可以将它们成功保存在表格中。但是在检索那些已保存行的ID时会出现问题。 LastInsertID()此处仅返回一个最后一个ID。如何使用saveAll()获取我插入的所有最后插入的ID?

1 个答案:

答案 0 :(得分:25)

在saveAll执行中的每个单独保存后调用

afterSave 函数,因此您可以执行以下操作: 在你的AppModel


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

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

您可以将此代码放入任何模型中,它应该可以正常工作。然后在控制器中的saveAll之后返回ID,你会这样做:


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

希望有所帮助