在插入ZF2之前获取最后一个id

时间:2013-07-30 05:11:14

标签: php sql database pdo zend-framework2

我正在尝试实现一个可以在插入记录之前获取最后一个插入ID的操作。

该动作基本上应该是获取最后插入的id,然后我向它添加1然后该值将用于当前插入的数据。

我已经走了多远,而且错误正在变得

//the action to get the last inserted id
public function getLastID(){
    $lastcourseid = $this->tableGateway->select(function (Select $select){
        $select->columns(array('id'));
        $select->order('id ASC')->limit(1);
     });

    var_dump($lastcourseid);


    return $lastcourseid;
}

我在保存之前调用此函数

        if($id == 0){
        $data['course_code'] = $this->getLastID();
        $this->tableGateway->insert($data);
    }else{
        if($this->getAlbum($id)){
            $this->tableGateway->update($data, array('id' => $id));
        }else{
            throw new \Exception("Form id does not exist");//an error is thrown in case the id is not found

        }
    }

这是我得到的错误

  

捕获致命错误:类Zend \ Db \ ResultSet \ ResultSet的对象   无法转换为字符串   我不知道哪里出错了。

任何帮助将不胜感激。感谢

2 个答案:

答案 0 :(得分:4)

没有像“插入前的最后一个ID”这样的东西 你不需要它。

首先插入一条记录,然后获取您的ID。这是它的工作原理。

答案 1 :(得分:0)

您没有提到底层数据库(postgressql,mysql等)。我对MySQL比较熟悉。 Perl和php AIP具有“最后一行ID”功能。例如,php有“mysqli_insert_id()”。这假设您的rowID是AUTO_INCREMENT列。其他DB可能有不同的要求。