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

phe*_*mix 4 php mysql phalcon

LAST_INSERT_ID()在获取autoincrement主键列的最后一个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();

    }
Run Code Online (Sandbox Code Playgroud)

那么如何获得最后一个id Phalcon

Jes*_*e Q 12

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

$comande = new Commande();
Run Code Online (Sandbox Code Playgroud)

那么您可以分配如下值:

$comande->field1 = "hello";
$comande->adifferentfield = "world";
...
Run Code Online (Sandbox Code Playgroud)

然后你会跟着它:

$comande->save();  //yes I am aware we should test for success
Run Code Online (Sandbox Code Playgroud)

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

print $comande->id;
Run Code Online (Sandbox Code Playgroud)

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

  • 该死的,Phalcon太棒了! (2认同)

小智 5

$yourModel = new YourModel();
$yourModel->save() // Or create();
$newId = $yourModel->getWriteConnection()->lastInsertId();
Run Code Online (Sandbox Code Playgroud)

我觉得这样比较容易.希望它有用.