如何使用Phalcon获取最后一个插入ID?

时间:2015-09-23 13:46:27

标签: php mysql phalcon

我在获取自动增量主键列的最后一个ID时尝试使用LAST_INSERT_ID()但是我得到了EOF异常:

function add($tab) {

        $champs= "";
        $value = "";
        $separateur ="";

        $tab["commande_date"] = convertDateFormat5($tab["commande_date"]);

        foreach ($tab as $k => $v){
            if ($k == "salle_code" || $k == "table_code")
                continue;
            $champs .= $separateur . $k;
            $value .= $separateur . "'" . $v . "'";
            $separateur = ",";
        }
        $champs = '('.$champs.')';
        $value = '('.$value.')';
        $sSQL = "
                INSERT INTO Commande $champs
                VALUES $value
                ";
        $query = new Query($sSQL,$this->getDI());

        $ret = $query->execute();

        $sSQL = "SELECT LAST_INSERT_ID() as last_id";
        $queryId = new Query($sSQL,$this->getDI());

        return $queryId->execute();

    }

那么如何使用Phalcon获取最后一个ID?

3 个答案:

答案 0 :(得分:12)

你处理这个问题的方式是相当反MVC,你在桌面上留下了很多Phalcon功能。您应该有一个名为Commande的数据库模型,应该创建类似于:

的模型
$comande->field1 = "hello";
$comande->adifferentfield = "world";
...

然后你可以分配如下的值:

$comande->save();  //yes I am aware we should test for success

然后你会跟着它:

print $comande->id;

然后您可以访问您的关键字段,该字段将自动填充,如:

each

你错过了许多错误处理和验证,就像你一样。

答案 1 :(得分:5)

$yourModel = new YourModel();
$yourModel->save() // Or create();
$newId = $yourModel->getWriteConnection()->lastInsertId();

我觉得这样比较容易。希望它有所帮助。

答案 2 :(得分:3)

您可以使用lastInsertId()功能

$sSQL = "INSERT INTO Commande $champs VALUES $value ";
$query = new Query($sSQL,$this->getDI());
$ret = $query->execute();
$lastId = $query->lastInsertId();
  

<强>更新

以下是插入和取回lastinsert id的示例。

$success = $connection->insert(
     "robots",
     array("Astro Boy", 1952),
     array("name", "year")
 );

 //Getting the generated id
 $id = $connection->lastInsertId();

我认为这可能会对你有帮助。